0

フラットページを使用しているときにdjangoでURLルーティングがどのように機能するかを理解するのに本当に問題があり、誰かが私のコードを見て、私が間違っていることを説明してくれることを望んでいました.

また、これをデバッグするためのアドバイスがあれば非常に役立ちます。理想的には、リクエストが正常に解決されたときに、django がその解決にどのように到達するかを確認したいと思います。現時点では、404 を取得したときに試行された URL パターンのみが表示されます。

前もって感謝します、

settings.py には - APPEND_SLASH = True があります

私は次のURL構造を持っています.括弧内には、正規表現が何をすべきかを示しています..

#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'^en') がフラットページのすべてのキャッチで正しく機能しないことにあると感じていますが、その理由を確認する方法がわかりません。この段階でスキルをデバッグします。

大変助かります...

4

2 に答える 2