Ceci est mon code ..
urlpatterns =[
path('',views.School_Lview.as_view(),name='list'),
path('(?P<pk>\d+)/',views.School_Dview.as_view(),name='detail')
]
J'essaie de faire fonctionner ce modèle
{% for school in schools %}
<h2><li><a href="{{school.id}}"> {{school.name}}</a></li></h2>
{% endfor%}
3 réponses
Je l'ai corrigé ... J'ai utilisé re_path au lieu de path et cela a fonctionné comme un charme ..
re_path('(?P<pk>\d+)/',views.School_Dview.as_view(),name='detail')
Bien que les réponses soient correctes, je voulais simplement souligner que Django
utilise en fait l'expression régulière [0-9]+
au lieu de \d+
pour les clés primaires.
Ils ont tous les deux le même effet mais ici vous pouvez voir tous les convertisseurs par défaut et leurs expressions régulières qui sont cachés derrière la «nouvelle» syntaxe de chemin.
Django2.0 ne prend pas en charge l'utilisation de l'expression régulière dans django.urls.path () sinon si vous voulez vraiment écrire l'expression régulière dans vos URL, je vous conseillerai d'utiliser django.urls.re_path () qui est la nouvelle fonction de l'ancienne version django.conf.urls.url
Différence entre chemin () et re_path ()
Avec chemin () vos URL seraient écrites comme;
from urls import path
urlpatterns =[
path('',views.School_Lview.as_view(),name='list'),
path('<int:pk>/',views.School_Dview.as_view(),name='detail')
]
Avec re_path ()
from urls import path
urlpatterns =[
re_path('',views.School_Lview.as_view(),name='list'),
re_path('(?P<pk>\d+)/',views.School_Dview.as_view(),name='detail')
]
Consultez la documentation officielle pour plus d'informations sur le routage des URL dans django2. 0
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.