(django URLconf)页面找不到仅包含“ - ”字符的网址的错误

时间:2014-08-12 13:19:12

标签: regex django django-urls urlconf

我有一个奇怪的问题无法弄清楚什么是错的,我的任何包含' - 字符的网址都会出现404错误...

项目根目录中的urls.py工作正常

url(r'^serialy/', include('movieSite.series.urls')),

接下来是

urlpatterns = patterns('',

              url(r'^$', views.serialy_index, name='serialy_index'), #this works 

              (r'^(?P<serial_title>[\w]+)/$', serial),

              )

第二个,使用 serial_title ,仅当系列的标题类似于' Dexter '或' Continuum 时才有效。 “但是其他系列的标题如'Family guy',所以当我创建url时,我会使用一个函数将其更改为'Family-guy',但由于某种原因它不适用于那些带有' - '字符的标题。我总是得到像这样的404错误

Using the URLconf defined in movieSite.urls, Django tried these URL patterns, in this order:

^serialy/ ^$ [name='serialy_index']
^serialy/ ^(?P<serial_title>[\w]+)/$

^static\/(?P<path>.*)$
The current URL, serialy/Whats-with-Andy/, didn't match any of these.

所以这里的网址 serialy / whats-with-andy / 不匹配,但是如果我访问 serialy / continuum 它可以正常工作吗?谁有任何想法可能会导致这个? 哦,这就是视图的样子

def strip(s):
    s.replace('-',' ')
    return s
def serial(request, serial_title=None) :
    s_title = strip(serial_title) 
    obj = Show.objects.get(title__icontains=s_title)
    #episodes = obj.episodes
    des = obj.description 
    img = obj.image 
    title = obj.title 

    t = get_template('serial.html')
    html = t.render(Context({
                             'the_title':title,'the_image':img,'the_description':des
                             })) 
    return HttpResponse(html)

2 个答案:

答案 0 :(得分:0)

正则表达式[\w]+仅匹配单词,而不匹配-等特殊字符。

如果您将其更改为[-\w]+,则匹配&#34; slug&#34;网址。

答案 1 :(得分:0)

我认为你的正则表达式失败了因为&#39; - &#39;不被认为是\ w的匹配。看这里: https://docs.python.org/2/library/re.html