Django urls.py 误认为两个关闭的 url

Elb*_*ore 0 python django django-templates django-urls django-views

我正在向我的应用程序添加表单来修改我的大厅(我的自定义模型)。

urls.py中,这是我的 urlpattern:

urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^lobbys/$', views.LobbyListView.as_view(), name='lobbys'),
url(r'^lobby/(?P<pk>[\w-]+)/$', views.LobbyDetailView.as_view(), name='lobby-detail'),
url(r'^lobby/create/$', views.LobbyCreate.as_view(), name='lobby_create'),
url(r'^lobby/(?P<pk>\d+)/update/$', views.LobbyUpdate.as_view(), name='lobby_update'),
url(r'^lobby/(?P<pk>\d+)/delete/$', views.LobbyDelete.as_view(), name='lobby_delete'),
]
Run Code Online (Sandbox Code Playgroud)

问题如下:

第三个 URL 应该链接到以 UUID 字段作为主键标识的单个大厅模板。如果没有最后三行,一切都正常,但是当我添加表单的三个网址时,我收到错误

异常值:[“‘create’不是有效的 UUID。”]

我了解 urls.py 将“create”作为主键,而不是将其视为其他视图的 url。

我怎样才能绕过这个问题?非常感谢。

kar*_*ikr 5

您需要更改 url 模式的顺序

url(r'^lobby/create/$', views.LobbyCreate.as_view(), name='lobby_create'),
url(r'^lobby/(?P<pk>[\w-]+)/$', views.LobbyDetailView.as_view(), name='lobby-detail'),
Run Code Online (Sandbox Code Playgroud)

问题是,由于lobby-detail正在寻找字母模式,它也与模式匹配lobby/create。正则表达式模式中的顺序很重要,因此lobby_create永远不会匹配。通过更改顺序,问题将得到解决