这应该是一个简单的问题。我在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 /的实例?
答案 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的位置停止。”)