网站还有一个主页。没问题。但是,当我试图添加其他非数据驱动的页面(关于,任务声明等)时,我遇到了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()语句试图解决实际问题。
答案 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'),