django url有两个slu c coflict

时间:2015-07-15 22:13:59

标签: django django-urls

我的urls.py

url(r'^(?P<slug>.+)/$', page, name='page'),
url(r'^(?P<slug1>.+)/(?P<slug2>.+)/$', subpage, name='subpage'),

页面和子页面是两个不同模型中的两个函数。

并在我的app1 / views.py

def page(request, slug):
    try :
       #some code
    except myModel.DoesNotExist:
       return HttpResponseNotFound('<h1>not found</h1>')

和imy app2 / views.py

def page(request, slug1, slug2):
    try :
       #some code
    except myModel.DoesNotExist:
       return HttpResponseNotFound('<h1>not found</h1>')

问题是我没有得到子页面!

如果我将网址更改为

url(r'^AAAA(?P<slug>.+)/$', page, name='page'),
url(r'^BBBB(?P<slug1>.+)/(?P<slug2>.+)/$', subpage, name='subpage'),
一切顺利!

我该如何解决?

1 个答案:

答案 0 :(得分:3)

请勿在正则表达式中使用. +。它将匹配所有字符,包括斜杠。通常,你会使用[-\w]+,它匹配字母a-z和A-Z,数字0-9,连字符和下划线。

url(r'^(?P<slug>[-\w]+)/$', page, name='page'),
url(r'^(?P<slug1>[-\w]) /(?P<slug2>[-\w]+)/$', subpage, name='subpage'),