0

我刚开始使用 Django 和 Python,所以我还是新手。这是我的 urls.py:

url(r'(?P<slug>[-\w]+)/$','person_detail'),
url(r'(?P<slug>[-\w]+)/delete/$','person_delete'),

问题是,当我尝试对 url: slug/delete/ 执行操作时,它正在寻找整个部分 slug/delete/ 作为 slug。当我删除第一个 url 中的 $ 时,它不会转到 person_delete 视图,而是转到 person_detail 视图,忽略 /delete/ 部分有什么想法吗?

4

4 回答 4

6

尝试添加前导^

url(r'^(?P<slug>[-\w]+)/$','person_detail'),
url(r'^(?P<slug>[-\w]+)/delete/$','person_delete'),

也就是说,如果没有领先,^我希望foo/delete/你能person_detail看到slugas delete,而不是foo/delete.

于 2009-11-09T13:36:25.907 回答
1

像这样的东西怎么样

url(r'(?P<slug>[^/]+)/$','person_detail'),
url(r'(?P<slug>[^/]+)/delete/$','person_delete'),

确保蛞蝓不能包含斜线?您也可以尝试以相反的顺序设置规则,尝试让 Django 先匹配 /.../delete/。

于 2009-11-09T13:46:10.910 回答
1

请注意,slug 字段也可能包含数字(不仅仅是字母和破折号),因此您希望将其更改为:

SLUG = '(?P<slug>[\w\d-]+)'

url(r'^'+SLUG+'/delete$', delete_method, {}, 'delete_url_name')
于 2012-02-10T14:42:02.217 回答
0
url(r'(?P<slug>[-\w]+)/delete/$','person_delete'),
url(r'(?P<slug>[-\w]+)/','person_detail'),

在这种情况下,url 顺序很重要,因为 url 调度程序使用第一个匹配。公共网址应该放在最后。

于 2009-11-09T14:04:57.480 回答