gwift-book/source/part-3-django-concepts/mvc/urls.adoc

1.8 KiB
Raw Blame History

URLs

La gestion des URLs permet grosso modo dassigner une adresse paramétrée ou non à une fonction Python. La manière simple consiste à modifier le fichier gwift/settings.py pour y ajouter nos correspondances. Par défaut, le fichier ressemble à ceci:

# gwift/urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]

Le champ urlpatterns associe un ensemble dadresses à des fonctions. Dans le fichier nu, seul le pattern admin`_ est défini, et inclut toutes les adresses qui sont définies dans le fichier `admin.site.urls. Reportez-vous à linstallation de lenvironnement: ce fichier contient les informations suivantes:

  1. _`admin`: Rappelez-vous de vos expressions régulières: ^ indique le début de la chaîne.

  2. code-block:: python

    # admin.site.urls.py

Reverse

En associant un nom ou un libellé à chaque URL, il est possible de récupérer sa traduction. Cela implique par contre de ne plus toucher à ce libellé par la suite…

Dans le fichier urls.py, on associe le libellé wishlists à lURL r'^$ (cest-à-dire la racine du site):

from wish.views import WishListList

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', WishListList.as_view(), name='wishlists'),
]

De cette manière, dans nos templates, on peut à présent construire un lien vers la racine avec le tags suivant:

<a href="{% url 'wishlists' %}">{{ yearvar }} Archive</a>

De la même manière, on peut également récupérer lURL de destination pour nimporte quel libellé, de la manière suivante:

from django.core.urlresolvers import reverse_lazy

wishlists_url = reverse_lazy('wishlists')