URL 主键模式无法正常工作

URL Pattern with Primary Key not working properly

需要有关 url 中正则表达式的帮助。我正在构建一个不同的应用程序,而不是上面讲座中显示的应用程序。与我的讲座案例相关,学校是客户,学生是类别。

在 urls.py 文件中,来自 url_patterns :

url(r'^(?P<pk>[-\w]+)/$', views.DetailClientList.as_view(), name='Detail_Client_List'),

这工作正常,地址为 http://127.0.0.1:8000/App1/cli1/,其中 cli1 是客户 table 主键(记录之一)。

但是当我将下面的行放在 url 模式中时(而不是上面的)

url(r'^<str:pk>/$', views.DetailClientList.as_view(), name='Detail_Client_List')

我收到以下错误(int:pk 的错误相同):


找不到页面 (404)

请求Method:GET

请求URL:http://127.0.0.1:8000/App1/cli1/


结果 URL 在上述两种情况下是相同的。那么我哪里错了。我猜它是 url 模式正则表达式的问题(尽管结果 URL 是一样的?)。

请帮忙。 TIA!

您可能误解了 url(...)--(Doc) with path(...)--(Doc)

所以,

from django.conf.urls import url

urlpatterns = [
    url(
        r'^(?P<pk>[-\w]+)/$',
        views.DetailClientList.as_view(),
        name='Detail_Client_List'
    ),
]

与以下相同,

from django.urls import path

urlpatterns = [
    path(
        '<str:pk>',
        views.DetailClientList.as_view(),
        name='Detail_Client_List'
    )
]

尝试使用 re_path 而不是 'url'

from django.urls import re_path, path
1. re_path
re_path(r'^<str:pk>/$', views.DetailClientList.as_view(), name='Detail_Client_List')
2.路径
path('<str:pk>/', views.DetailClientList.as_view(), name='Detail_Client_List')