Django网址模式

时间:2010-11-30 14:55:34

标签: django url

这应该是一个简单的问题。我在Django中有两个url模式:

url(r'^wiki/page/(?P<page_title>.*)', views.wiki_view, name = 'wiki_view'),
url(r'^wiki/page/$', views.wiki_page_index, name = 'wiki_page_index'),

当我访问/ wiki / page / test时,它会将我带到views.wiki_view。这是对的。我需要第一个模式来捕获“page /”之后的所有字符,这就是我使用的原因。*

当我访问/ wiki / page /时,它也会将我带到views.wiki_view。这是不正确的。

我可以改变第二个url模式:

url(r'^wiki/page/$', views.wiki_page_index, name = 'wiki_page_index'),

因此,当我访问/ wiki / page时,它会将我带到views.wiki_page_index。但我宁愿解决问题而不是避免它。

如何设置第一个url模式的格式,以便它不会获取/ wiki / page /的实例?

2 个答案:

答案 0 :(得分:7)

将第一个更改为:

url(r'^wiki/page/(?P<page_title>.+)', views.wiki_view, name = 'wiki_view'),

答案 1 :(得分:5)

将第二个放在当前第一个之前。

http://docs.djangoproject.com/en/dev/topics/http/urls/ (“Django按顺序遍历每个URL模式,并在第一个匹配请求的URL的位置停止。”)