gwift-book/source/django/mvc/urls.adoc

55 lines
1.8 KiB
Plaintext
Raw Normal View History

2020-02-17 20:45:39 +01:00
=== URLs
2015-11-06 12:13:23 +01:00
2015-11-06 12:42:29 +01:00
La gestion des URLs permet *grosso modo* d'assigner 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:
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
[source,python]
----
# gwift/urls.py
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
from django.conf.urls import include, url
from django.contrib import admin
2015-11-06 12:13:23 +01:00
2020-02-17 20:45:39 +01:00
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
----
2015-11-06 12:13:23 +01:00
Le champ `urlpatterns` associe un ensemble d'adresses à 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 à l'installation de l'environnement: ce fichier contient les informations suivantes:
.. _`admin`: Rappelez-vous de vos expressions régulières: `^` indique le début de la chaîne.
.. code-block:: python
# admin.site.urls.py
2020-02-17 20:45:39 +01:00
==== Reverse
2015-11-06 12:13:23 +01:00
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...
2020-02-17 20:45:39 +01:00
Dans le fichier `urls.py`, on associe le libellé `wishlists` à l'URL `r'^$` (c'est-à-dire la racine du site):
2020-02-17 20:45:39 +01:00
[source,python]
----
from wish.views import WishListList
2020-02-17 20:45:39 +01:00
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:
2020-02-17 20:45:39 +01:00
[source,html]
----
<a href="{% url 'wishlists' %}">{{ yearvar }} Archive</a>
----
2016-05-12 11:46:52 +02:00
De la même manière, on peut également récupérer l'URL de destination pour n'importe quel libellé, de la manière suivante:
2020-02-17 20:45:39 +01:00
[source,python]
----
from django.core.urlresolvers import reverse_lazy
2016-05-12 11:46:52 +02:00
2020-02-17 20:45:39 +01:00
wishlists_url = reverse_lazy('wishlists')
----