在使用平面页面时,我很难理解 django 中 url 路由的工作原理,并希望有人可以查看我的代码并解释我做错了什么。
此外,在调试此问题时提供一些建议会非常有帮助 - 理想情况下,当请求成功解决时,我想看看 django 如何达到该解决方案。目前,当我收到 404 时,我只看到尝试的 url 模式。
提前致谢,
在 settings.py 我有 - APPEND_SLASH = True
我有以下 url 结构,在括号中我已经指出我认为我的 reg ex应该做什么..
#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') 无法正常使用平面页面的全部捕获,但我不知道如何理解为什么会这样,因为我缺乏任何类型的这个阶段的调试技巧。
非常感谢帮助...