【问题标题】:Django 2.0 Trying to Grab the primary key with regular Expressions but im getting 404Django 2.0 尝试使用正则表达式获取主键,但我得到 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\d+)/
  • 它说应用程序未定义..我正在使用 django2.0 所以 url() 不起作用所以我使用路径..stackoverflow.com/questions/47947673/…
  • 它应该可以工作,你做错了什么,你有没有在settings.py中注册你的应用程序????
  • 感谢@Sagar 的帮助

标签: python django


【解决方案1】:

我修复了它...我使用了 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 您可以看到隐藏在“新”路径语法后面的所有默认转换器及其正则表达式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-18
        • 2017-05-14
        • 2023-04-06
        • 1970-01-01
        • 2018-07-05
        • 2013-05-02
        相关资源
        最近更新 更多