网站除了几个数据驱动的应用程序外,还有一个主页。 没问题。但是当我尝试添加其他非数据驱动的页面(关于、使命宣言等)时,我在 url 指示方面遇到了麻烦。
settings.py URL 模式包括:
url(r'^$', include('home.urls')),
url(r'^mission/$', include('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 砖头吗?我很感激。
已解决 - 谢谢索汉·耆那教
实际问题是在设置 URLPATTERNS 中使用 r'^$' 而不是 r''。使用第二个 include() 语句是试图解决实际问题。
当您从另一个目录中include
url 时,它们的路径必须以第一个参数开头。
所以当你说url(r'^$', include('home.urls'))
,这意味着:对于home.urls中的每个url,使其路径以^$
开头,即什么都没有。
当你说url(r'^mission/$', include('home.urls'))
,这意味着:对于home.urls中的每个url,让它的路径以"mission"开头。
并且网址按顺序匹配。因此,导航到/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'),