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

时间:2017-12-18 00:06:55

标签: python django django-templates django-views django-urls

我正在向我的应用添加表单以修改我的游说(我的自定义模型)。

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字段作为主键的单个大厅模板。如果没有最后三行,一切都运行正常,但当我为表单添加三个网址时,我收到了错误

  

例外价值:[&#34;&#39;创建&#39;不是有效的UUID。&#34;]

我理解urls.py正在&#34;创建&#34;作为主键,而不是将其视为另一种观点的网址。

如何绕过这个问题? 非常感谢你。

1 个答案:

答案 0 :(得分:2)

您需要更改网址格式的顺序

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正在寻找一个字母模式,它也匹配模式lobby/create。该顺序在正则表达式模式中很重要,因此lobby_create永远不会匹配。通过更改顺序,问题将得到解决