Django urls.py 弄错了两个相近的 url
Django urls.py mistaking two close urls
我正在向我的应用添加表单以修改我的大厅(我的自定义模型)。
在 urls.py 中,这是我的 url 模式:
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 应该 link 到一个用 UUID 字段作为主键标识的大厅模板。没有最后三行,一切正常,但是当我为表单添加三个 url 时,出现错误
Exception Value: ["'create' is not a valid UUID."]
我了解 urls.py 将 "create" 作为主键,而不是将其视为另一个视图的 url。
如何绕过这个问题?
非常感谢。
您需要更改 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
正在寻找字母数字模式,它也匹配模式 lobby/create
。正则表达式模式中的顺序很重要,因此 lobby_create
永远不会匹配。通过更改顺序,问题将得到解决
我正在向我的应用添加表单以修改我的大厅(我的自定义模型)。
在 urls.py 中,这是我的 url 模式:
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 应该 link 到一个用 UUID 字段作为主键标识的大厅模板。没有最后三行,一切正常,但是当我为表单添加三个 url 时,出现错误
Exception Value: ["'create' is not a valid UUID."]
我了解 urls.py 将 "create" 作为主键,而不是将其视为另一个视图的 url。
如何绕过这个问题? 非常感谢。
您需要更改 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
正在寻找字母数字模式,它也匹配模式 lobby/create
。正则表达式模式中的顺序很重要,因此 lobby_create
永远不会匹配。通过更改顺序,问题将得到解决