2016-05-25 51 views
0

我需要將一個快速城市特定的東西鎖定到我當前正在構建的網站上。我打算這樣做 - http://example.com/XX/normal-slug。我已經在我的urls.py設置是這樣的:忽略網址中的參數

url(r'^(?P<city>[a-zA-Z]{2})/', include('homepage.urls', namespace='homepage')), 
url(r'^(?P<city>[a-zA-Z]{2})/section/', include('section.urls', namespace='section')), 

# etc 

我現在遇到的問題是,突然我的方法的所有都期望有一個「城市= XX」參數。我打算在中間件中處理實際的城市業務邏輯。我的問題是...是否有django「忽略」命名參數?我現在不想修改我的所有觀點,以取得** kwards或「城市」參數。如果我硬編碼的城市代碼,它做我的預期:

url(r'^XX/section/', include('section.urls', namespace='section')), 

所以我可以複製該行爲,但動態?

(另外,我計劃的東西更強大的進一步向下行,可能是Django的網站)

+0

你試過'URL(R」^XX/section /',include('section.urls',namespace ='section'),kwargs = {'city':'XX'}),'? – raphv

+0

我想你誤會了 - 我需要保留正則表達式,但不傳遞參數 –

回答

0

設置帕拉姆可選的正則表達式與?

url(r'^((?P<city>[a-zA-Z]{2})/)?section/', include('section.urls', namespace='section')), 

如果城市沒有在URL發送,您的觀點將得到city=None

1

可以使用非捕獲正則表達式來接受參數,而不是將它傳遞給意見。

r'^[a-zA-Z]{2}/section' 
+0

是一個很好的解決方案,但下面的答案也回答了一個問題,我還不知道我需要 - 如果城市部分不在那裏(哪有時它不是) –