2014-02-22 112 views
0

我有真正的麻煩了解如何使用網頁時,在Django的url路由工程,並希望有人可以看看我的代碼,並解釋我做錯了什麼。Django的網址路由與網頁

另外,在調試時有一些建議會非常有幫助 - 理想情況下,當請求成功解析時,我想看看django如何達到該解決方案。目前我只看到URL模式嘗試當我得到提前404

感謝,

在settings.py我有 - APPEND_SLASH =真

我有以下URL結構,括號我已經表明了我想我的REG前應該做..

#urls.py 

url(r'^$', home), # (match/and nothing else) 
url(r'^fa/$', home), # (match /fa and nothing else) 
url(r'^en/$', en_home), # (match /en and nothing else) 

url(r'^fa', include('ir_site.urls')), # (match any path like fa/*/) 
url(r'^en', include('en_site.urls')), # (match any path like en/*/) 

#in ir_site.urls 
urlpatterns = patterns('', 
    url(r'contact/$', views.static_contact) # (match fa/contact) 
) 
urlpatterns += patterns('django.contrib.flatpages.views', 
    (r'^(?P<url>.*/)$', 'flatpage'), # (match any fa/*/ not resolved or 404) 
) 

#in en_site.urls 
urlpatterns = patterns('', 
    url(r'contact/$', views.static_contact) # (match en/contact) 
) 
urlpatterns += patterns('django.contrib.flatpages.views', 
    (r'^(?P<url>.*/)$', 'flatpage'), # (match any en/*/ not resolved or 404) 
) 

我有以下的平坦頁

/en/test/ 
/fa/test/ 
/test/ 
/en/test2 

測試的結果:

/ - Fine 
/en - Fine 
/fa - Fine 
/test - Fine  
/fa/test - Fine 
/en/test - Extra/is appended results in 404 
/en/test2 - Fine, but uses the flatpages template in the ir_site app 
/en/contact - Fine 
/fa/contact - Fine 

我有一種感覺,問題是(R「^ FA」)和(R「^恩」)不與閉鎖正常工作,所有的flatpages但我不知道如何看到爲什麼這是因爲我在這個階段缺乏任何一種調試技巧。

幫助非常感謝...

回答

0

所以通過消除urls.py到的flatpages任何引用,只是使用中間件,我發現所有的問題消失了,一切都開始按預期運行。

0

更改您的urls.py爲包括以下內容。你需要在URL上有一個/後面的。

url(r'^fa/', include('ir_site.urls')), 
url(r'^en/', include('en_site.urls')), 

也爲你的URL參數,我想你會更好使用+而不是*,因爲這將需要1個或多個字符,而*爲0以上。

最後,在ir_site.urls和en_site.urls中,您應該使用^來引導聯繫人,以便它僅在聯繫人是url的第一部分(在en /或fa /之後)時纔會匹配。

編輯: 更改flatpage網址格式。目前使用.將匹配/。我給出的示例將匹配長連字符的任何字母數字字符。

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

嗯,試過這個,但它沒有改變。問題是平板電腦網址,而不是總是解決好的聯繫網址。此外,它似乎恩/測試不會解決,因爲Django解析爲/ en /測試/ /(雙斜槓)這是一個404 – rix

+0

請參閱我的編輯更改flatpage urlpattern。 – schillingt

+0

對不起,但不知道爲什麼將'。*'改爲'[ - \ w] +'會有幫助? (我試過了,它沒有..)問題是肯定與包括雖然當我評論'r'^ fa /'和'r'^ en /'平面網頁仍然解決。問題是ir_site.urls和en_site.urls中的catchall模式 – rix