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



网站除了几个数据驱动的应用程序外,还有一个主页。 没问题。但是当我尝试添加其他非数据驱动的页面(关于、使命宣言等)时,我在 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'),

最新更新