Django urlpatterns / include()加载错误的视图

时间:2016-02-28 18:52:55

标签: python django python-3.x django-urls

除了几个数据驱动的应用程序外,

网站还有一个主页。没问题。但是,当我试图添加其他非数据驱动的页面(关于,任务声明等)时,我遇到了url指示的麻烦。

settings.py网址格式包括:

url(r'^$', include('home.urls')),
url(r'^mission/$', include('home.urls')),

home / urls.py包含:

url(r'^$', views.index, name='index'),
url(r'^mission/$', views.mission, name='mission'),

将浏览器定向到主页会加载索引视图,但是将浏览器定向到/mission/ 也会加载索引视图。

我意识到我可能在这里遗漏了一些小的(和基本的),但是我已经第一百次阅读了这些文档并阅读了很多关于urlpatterns的其他人的问题,但我无法弄清楚发生了什么。 settings.py中的include()语句似乎不是问题所在。由于主索引视图加载它显然被定向到home / urls.py,而且该文件非常简单,我无法看到问题所在。

有人可以教育我这样我可以继续我的下一个Django砖吗?我很感激。

已解决 - 谢谢Sohan Jain

实际问题是使用r' ^ $'在设置URLPATTERNS而不是r''。使用第二个include()语句试图解决实际问题。

1 个答案:

答案 0 :(得分:2)

当您include来自其他目录的网址时,其路径必须以第一个参数开头。

所以当你说url(r'^$', include('home.urls'))时,这意味着:对于home.urls中的每个网址,使其路径以^$开头,即没有。

当你说url(r'^mission/$', include('home.urls'))时,这意味着:对于home.urls中的每个网址,使其路径以“任务”开头。

网址按顺序匹配。然后导航到/mission/匹配url(r'^mission/$', include('home.urls')),然后导航url(r'^$', views.index, name='index'),这会生成索引页。

这是你想要的:

settings.py 
url(r'', include('home.urls'))

home/urls.py
url(r'^$', views.index, name='index'),
url(r'^mission/$', views.mission, name='mission'),