Django 2.0 尝试使用正则表达式获取主键,但我得到 404
Posted
技术标签:
【中文标题】Django 2.0 尝试使用正则表达式获取主键,但我得到 404【英文标题】:Django 2.0 Trying to Grab the primary key with regular Expressions but im getting 404 【发布时间】:2018-09-25 09:15:26 【问题描述】:这是我的代码..
urlpatterns =[
path('',views.School_Lview.as_view(),name='list'),
path('(?P<pk>\d+)/',views.School_Dview.as_view(),name='detail')
]
我正在尝试让这个模板工作
% for school in schools %
<h2><li><a href="school.id"> school.name</a></li></h2>
% endfor%
【问题讨论】:
我正在尝试链接特定学校(以及其他学校)详细视图.. 在 url 中试试这个,your_app_name/'(?P我修复了它...我使用了 re_path 而不是路径,它就像一个魅力..
re_path('(?P<pk>\d+)/',views.School_Dview.as_view(),name='detail')
【讨论】:
【参考方案2】:django2.0 不支持在 django.urls.path() 中使用正则表达式,否则如果你真的想在你的 url 中写正则表达式,我会建议你使用 django.urls.re_path() 这是旧版本的新功能 django.conf.urls.url
path() 和 re_path()
的区别使用 path() 你的网址会写成:
from urls import path
urlpatterns =[
path('',views.School_Lview.as_view(),name='list'),
path('<int:pk>/',views.School_Dview.as_view(),name='detail')
]
使用 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')
]
查看official documentation 以了解有关 django2.0 中 url 路由的更多信息
【讨论】:
【参考方案3】:虽然答案是正确的,但我只是想指出 Django
实际上使用正则表达式 [0-9]+
而不是 \d+
作为主键。
它们都具有相同的效果,但here 您可以看到隐藏在“新”路径语法后面的所有默认转换器及其正则表达式。
【讨论】:
以上是关于Django 2.0 尝试使用正则表达式获取主键,但我得到 404的主要内容,如果未能解决你的问题,请参考以下文章