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
Abrar 15 avril 2018 à 18:29

3 réponses

Meilleure réponse

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')
1
Abrar 15 avril 2018 à 15:47

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.

0
Yannic Hamann 15 janv. 2020 à 08:31

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

2
Sylvernus Akubo 2 mai 2018 à 11:25