Mise à jour de 'source/part-3-django-concepts/urls.adoc'
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
c951e9f12d
commit
618980ce31
|
@ -14,9 +14,16 @@ urlpatterns = [
|
||||||
]
|
]
|
||||||
----
|
----
|
||||||
|
|
||||||
La variable `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`.
|
La variable `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`.
|
||||||
|
|
||||||
NOTE: petit mot d'explication sur les expressions rationnelles.
|
Django fonctionne avec des *expressions rationnelles* simplifiées (des **expressions régulières** ou **regex**)
|
||||||
|
pour trouver une correspondance entre une URL et la fonction qui recevra la requête et retournera une réponse.
|
||||||
|
Nous utilisons l'expression `^$` pour déterminer la racine de notre application, mais nous pourrions appliquer d'autres regroupements
|
||||||
|
(`/home`, `users/<profile_id>`, `articles/<year>/<month>/<day>`, ...).
|
||||||
|
Chaque *variable* déclarée dans l'expression régulière sera apparenté à un paramètre dans la fonction correspondante.
|
||||||
|
Ainsi,
|
||||||
|
|
||||||
[source,python]
|
[source,python]
|
||||||
----
|
----
|
||||||
|
@ -40,9 +47,14 @@ urlpatterns = [
|
||||||
]
|
]
|
||||||
----
|
----
|
||||||
|
|
||||||
|
NOTE: Dans la mesure du possible, essayez toujours de **nommer** chaque expression.
|
||||||
|
Cela permettra notamment de les retrouver au travers de la fonction `reverse`, mais permettra également de simplifier vos templates.
|
||||||
|
|
||||||
A présent, on doit tester que l'URL racine de notre application mène bien vers la fonction `wish_views.wishlists`.
|
A présent, on doit tester que l'URL racine de notre application mène bien vers la fonction `wish_views.wishlists`.
|
||||||
|
|
||||||
Prenons par exemple l'exemple de Twitter : quand on accède à une URL, elle est de la forme `https://twitter.com/<user>``. Sauf que les pages `about` et `help` existent également. Pour implémenter ce type de précédence, il faudrait implémenter les URLs de la manière suivante:
|
Prenons par exemple l'exemple de Twitter : quand on accède à une URL, elle est de la forme `https://twitter.com/<user>`.
|
||||||
|
Sauf que les pages `about` et `help` existent également.
|
||||||
|
Pour implémenter ce type de précédence, il faudrait implémenter les URLs de la manière suivante:
|
||||||
|
|
||||||
[source,text]
|
[source,text]
|
||||||
----
|
----
|
||||||
|
@ -51,11 +63,13 @@ Prenons par exemple l'exemple de Twitter : quand on accède à une URL, elle est
|
||||||
| <user>
|
| <user>
|
||||||
----
|
----
|
||||||
|
|
||||||
Mais cela signifie aussi que les utilisateurs `about` et `help` (s'ils existent...) ne pourront jamais accéder à leur profil. Une dernière solution serait de maintenir une liste d'authorité des noms d'utilisateur qu'il n'est pas possible d'utiliser.
|
Mais cela signifie aussi que les utilisateurs `about` et `help` (s'ils existent...) ne pourront jamais accéder à leur profil.
|
||||||
|
Une dernière solution serait de maintenir une liste d'authorité des noms d'utilisateur qu'il n'est pas possible d'utiliser.
|
||||||
|
|
||||||
D'où l'importance de bien définir la séquence de déinition de ces routes, ainsi que des espaces de noms.
|
D'où l'importance de bien définir la séquence de déinition de ces routes, ainsi que des espaces de noms.
|
||||||
|
|
||||||
L'idée des espaces de noms ou _namespaces_ est de définir un _sous-répertoire_ dans lequel on trouvera nos nouvelles routes. Cette manière de procéder permet notamment de répondre au problème ci-dessous, en définissant un sous-dossier type `https://twitter.com/users/<user>``.
|
L'idée des espaces de noms ou _namespaces_ est de définir un _sous-répertoire_ dans lequel on trouvera nos nouvelles routes.
|
||||||
|
Cette manière de procéder permet notamment de répondre au problème ci-dessous, en définissant un sous-dossier type `https://twitter.com/users/<user>`.
|
||||||
|
|
||||||
De là, découle une autre bonne pratique: l'utilisation de _breadcrumbs_ (https://stackoverflow.com/questions/826889/how-to-implement-breadcrumbs-in-a-django-template) ou de guidelines de navigation.
|
De là, découle une autre bonne pratique: l'utilisation de _breadcrumbs_ (https://stackoverflow.com/questions/826889/how-to-implement-breadcrumbs-in-a-django-template) ou de guidelines de navigation.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue