2012-07-26 59 views
0

我有空格替換爲「 - 」字符的網址。 所以我做了一個URL的正則表達式是這樣的:錯誤的網址正則表達式讓django忙碌

url(r'^(?P<item_url>(\w+-?)*)/$', 'detail'), 

我的觀點:

def detail(request, item_url): 
    i = get_object_or_404(Page, url=item_url,published=True) 
    return render_to_response('item/detail.html', {'item':i}, 
     context_instance=RequestContext(request)) 

不幸的是這樣下去的Django非常繁忙與超過20個字符的URL。該過程掛起20秒 - 1分鐘,然後返回正確的結果。這是基於我使用的錯誤正則表達式嗎?

回答

1

嘗試以下URL模式:

url(r'^(?P<item_url>[\w-]+)/$', 'detail'), 

[\w-]+將匹配一個或多個字母數字字符或連字符。

+0

這工作,非常感謝你!任何想法爲什麼我的正則表達式掛起? – Joey 2012-07-26 13:53:34

+0

在您的正則表達式中,'(\ w + - ?)'表示一個由1個或更多字母數字字符組成的組,後跟零或1個連字符。那麼'*'匹配表示零個或許多這些組。我的正則表達式更復雜,但我不明白爲什麼它會一直持續下去。 – Alasdair 2012-07-26 14:18:25