Activer les URL sluggified dans Django
Question
J'essaie d'activer les URL sluggifiées dans Django du formulaire que SO utilise: exemple.com/id/slug. Je n'ai aucun problème à activer les slugs, et des URL sont actuellement configurées sous la forme: http://127.0.0.1 : 8000 / articles / id / (par exemple. / Articles / 1 /) et cela fonctionne bien. Le URLpattern correspondant est:
(r'^(?P<object_id>\d+)/
Si je modifie le modèle d'URL en:
(r'^(?P<slug>\d+)/
Ensuite, je reçois les informations suivantes lorsque je navigue vers http://127.0.0.1.18000. / articles / autre-article / :
L'URL actuelle, articles / another-article /, ne correspond à aucun de ces éléments.
Si, toutefois, j'essaie:
http://127.0.0.1:8000/articles/1/
je reçois le message d'erreur:
Aucun article trouvé ne correspond à la requête
En fin de compte, je souhaite pouvoir accéder à un article par l'un des moyens suivants:
http://127.0.0.1:8000/articles/1/
ou
http://127.0.0.1:8000/articles/1/another-article/
, 'django.views.generic.list_detail.object_detail', info_dict),
Si je modifie le modèle d'URL en:
<*>
Ensuite, je reçois les informations suivantes lorsque je navigue vers http://127.0.0.1.18000. / articles / autre-article / :
L'URL actuelle, articles / another-article /, ne correspond à aucun de ces éléments.
Si, toutefois, j'essaie:
<*>
je reçois le message d'erreur:
Aucun article trouvé ne correspond à la requête
En fin de compte, je souhaite pouvoir accéder à un article par l'un des moyens suivants:
http://127.0.0.1:8000/articles/1/
ou
http://127.0.0.1:8000/articles/1/another-article/
, 'django.views.generic.list_detail.object_detail', info_dict),
Ensuite, je reçois les informations suivantes lorsque je navigue vers http://127.0.0.1.18000. / articles / autre-article / :
L'URL actuelle, articles / another-article /, ne correspond à aucun de ces éléments.
Si, toutefois, j'essaie:
<*>je reçois le message d'erreur:
Aucun article trouvé ne correspond à la requête
En fin de compte, je souhaite pouvoir accéder à un article par l'un des moyens suivants:
, 'django.views.generic.list_detail.object_detail', info_dict),http://127.0.0.1:8000/articles/1/ ou http://127.0.0.1:8000/articles/1/another-article/
Si je modifie le modèle d'URL en:
<*>Ensuite, je reçois les informations suivantes lorsque je navigue vers http://127.0.0.1.18000. / articles / autre-article / :
L'URL actuelle, articles / another-article /, ne correspond à aucun de ces éléments.
Si, toutefois, j'essaie:
<*>je reçois le message d'erreur:
Aucun article trouvé ne correspond à la requête
En fin de compte, je souhaite pouvoir accéder à un article par l'un des moyens suivants:
http://127.0.0.1:8000/articles/1/ ou http://127.0.0.1:8000/articles/1/another-article/
La solution
J'aurais dû être un peu plus patient avant de poser cette question car j'ai compris la réponse:
(r'^(?P<object_id>\d+)/
Le premier modèle autorise les URL de la forme / articles / 1 /, ce qui signifie que la deuxième urlpattern (pour inclure le slug) est facultative.
, 'django.views.generic.list_detail.object_detail', info_dict),
(r'^(?P<object_id>\d+)/(?P<slug>[-\w]+)/
Le premier modèle autorise les URL de la forme / articles / 1 /, ce qui signifie que la deuxième urlpattern (pour inclure le slug) est facultative.
, 'django.views.generic.list_detail.object_detail', info_dict),
Le premier modèle autorise les URL de la forme / articles / 1 /, ce qui signifie que la deuxième urlpattern (pour inclure le slug) est facultative.