2016-02-28 74 views
0

除了几个数据驱动的应用程序之外,网站还有一个主页。没问题。但正如我试图添加在其他非数据驱动的页面(关于,任务声明等),我通过url指令有麻烦。Django urlpatterns/include()加载错误的视图

settings.py URL模式包括:

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

家/ urls.py包括:

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

导演浏览器网页加载索引视图,因为它应该,但引导浏览器到/mission/加载索引视图。

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

有人请教育我,所以我可以继续我的下一个Django砖的脸?我很感激。


解决 - 谢谢你Sohan耆那教

实际问题是在设置URL模式,而不是R '' 使用R '^ $' 的。使用第二个include()语句试图解决实际问题。

+2

你有两个网址具有相同的名称,这不是它应该怎么做。名称应该是唯一的,或者如果您有相同的名称,则需要将它们放在不同的名称空间中。 另外,你不能''包含(')'以'$'结尾的模式 –

+1

我不明白你为什么在这里使用include两次。 –

+0

@Daniel,没有它,我得到了404。 –

回答

2

当您include从另一个目录转址时,它们的路径必须以第一个参数开始。

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

当你说url(r'^mission/$', include('home.urls')),这意味着:对于home.urls中的每个url,使其路径以'mission'开始。

和url按顺序匹配。所以导航到/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'), 
+0

@Jefe前往'/ mission /' –

+0

最后的评论是错误的。错字。 当我最初有它类似于这个我有r'^ $'作为表达我的settings.py urlpatterns。感谢您的帮助,现在这是有道理的。 –

+1

@Jefe你还有问题吗? –