django url 有两个 slug 冲突
django url with two slugs coflict
我有 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>')
和我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'),
一切顺利!
我该如何解决?
不要在正则表达式中使用 . +
。它将匹配所有字符,包括斜杠。通常,您会使用 [-\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'),
我有 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>')
和我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'),
一切顺利!
我该如何解决?
不要在正则表达式中使用 . +
。它将匹配所有字符,包括斜杠。通常,您会使用 [-\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'),