Training Menu

URLS en DJANGO

esther guemogne
Aug. 8, 2025 · 7.00 min read
0
Django
URLS en DJANGO

Les URLs dans Django 

Les URLs (Uniform Resource Locators) sont un élément fondamental dans toute application web, y compris celles construites avec Django. Elles permettent de mapper les requêtes des utilisateurs vers les bonnes vues et de structurer la navigation. Dans ce guide, nous allons explorer comment fonctionnent les URLs dans Django, comment les configurer et les bonnes pratiques à suivre.

---

1. Introduction aux URLs dans Django


Dans Django, les URLs sont gérées via le fichier **`urls.py`**, qui définit les routes de l’application. Chaque URL est associée à une **vue (view)** qui traite la requête et renvoie une réponse.

 

A.Structure de base d’un fichier `urls.py`

 

Cette page est structuree comme suit :


from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
    path('contact/', views.contact, name='contact'),
]


- path()`: Définit une route.
- Premier argument : Le chemin (ex: `'about/'`).
- Deuxième argument: La vue associée (ex: `views.about`).
- name`: Un nom unique pour référencer l’URL dans les templates (`{% url 'about' %}`).

 

2. Les Méthodes de Routage

a. `path()` (Recommandé)


La méthode la plus simple pour définir des URLs statiques.
exemple:  path('articles/', views.article_list, name='article_list'),

 

b. `re_path()` (Pour les URLs complexes)

Permet d’utiliser des **expressions régulières** pour des URLs dynamiques.


structure


from django.urls import re_path

re_path(r'^articles/(?P<year>[0-9]{4})/$', views.article_archive),

-?P<year>: Capture un paramètre nommé (`year`).

c. `include()` (Pour modulariser les URLs)


Permet d’inclure des URLs d’autres applications.

structure

from django.urls import include, path

urlpatterns = [
    path('blog/', include('blog.urls')),
]

 

3. Les Paramètres dans les URLs


a. Paramètres Simples


structure


path('articles/<int:article_id>/', views.article_detail, name='article_detail'),

- <int:article_id>: Convertit l’ID en entier.
- Types disponibles: `str`, `int`, `slug`, `uuid`, `path`.

 

b. Paramètres Optionnels

structure


path('articles/<int:article_id>/<slug:slug>/', views.article_detail),

 

c. Paramètres avec Valeurs par Défaut (via les vues)


def article_detail(request, article_id=1):
   remarque: Si article_id n'est pas fourni, utilise 1 par défaut

 


4. Les Noms d’URLs et `reverse()`


a. Pourquoi utiliser `name` ?


- Évite le "hardcoding"des URLs dans les templates.
- Facilite les changements sans tout réécrire

 

b. Utilisation dans les Templates

dans les templates HTML, il est conseillé d'ecrire:

<a href="{% url 'article_detail' article.id %}">Lire l'article</a>


c. Utilisation dans les Vues (`reverse()`


from django.urls import reverse

def redirect_to_article(request):
    return HttpResponseRedirect(reverse('article_detail', args=[1]))

 

 

5. Les Bonnes Pratiques


1. Nommez toutes vos URLs (`name='...'`) pour éviter les répétitions.
2. Utilisez `include()` pour séparer les URLs des différentes applications.
3. Évitez les URLs trop longues: `/blog/2023/10/15/my-article/` est mieux que `/blog?id=123`.
4. Protégez les URLs sensibles avec `@login_required` ou `@permission_required`.
5. Utilisez des slugs  pour les URLs SEO-friendly :
   exemple:   path('articles/<slug:slug>/', views.article_detail),
 

6. Exemple Complet


`myproject/urls.py` (URLs principales)


from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

 

blog/urls.py` (URLs de l’application)


 


from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('<int:post_id>/', views.post_detail, name='post_detail'),
]

 

Conclusion 


Les URLs dans Django sont  puissantes et flexibles, permettant une gestion propre des routes. En suivant les bonnes pratiques (noms d’URLs, `include()`, paramètres dynamiques), vous pouvez créer une structure d’URLs claire et maintenable.

 

0

Applaudissez pour montrer votre soutien

esther guemogne

0 Followers · Writer for Django