Django urls.py误认为两个关闭网址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django urls.py误认为两个关闭网址相关的知识,希望对你有一定的参考价值。

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

在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'),
]

问题如下:

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

例外值:[“'create'不是有效的UUID。”]

我知道urls.py将“创建”作为主键,而不是将其视为其他视图的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'),

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

以上是关于Django urls.py误认为两个关闭网址的主要内容,如果未能解决你的问题,请参考以下文章

Django 忽略对 urls.py 的更新

Django 视图与网址

Django视图与网址

Django urls.py。未按预期工作

Django note

如何让 Django urls.py 识别 url 中的 # (hash)?