我是Django的新手,在布局网站时,我是通过以下方式完成的:
该项目是各种各样的“门户”,
应用程序1“主页”是包含首页,登录名,注册名的应用程序
和其他“站点范围”功能
App 2“库存”是基本资产库存
App 3“仪表盘”是一组基于清单中资产的状态仪表盘
现在,我正在尝试添加登录功能,并且有一个主项目urls.py,如下所示:
文件:/portal/urls.py
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', include('home.urls'), name='home'),
url(r'^admin/', include(admin.site.urls), name='admin'),
url(r'^inventory/', include('inventory.urls'), name='inventory'),
url(r'^dashboard/', include('dashboard.urls'), name='dashboard'),
url(r'^capacity/', include('capacity.urls'), name='capacity'),
)
我的计划是使用... / home / urls.py的内容来管理站点范围内的任何功能,例如登录,注册等。
现在主页索引视图显示的很好,但是... / home / urls.py中的其他内容都给了我404
文件:/home/urls.py
from django.conf.urls import patterns, url
from home import views
urlpatterns = patterns('',
url(r'^test/$', views.index, name='home_test'),
url(r'^ajax_login/$', views.ajax_login, name='ajax_login'),
url(r'^$', views.index, name='home_index'),
)
在这一点上,我想我的问题有两个:我是否正确地解决了这个问题?如果是这样,我如何获得所需的功能?如果不是,我应该如何更改事物的设置/布局方式,以正确的“最佳实践”方式进行?
提前致谢!
编辑
多亏了dt0xff和holdenweb,它才能够正常工作,它接受了holdenweb的回答,因为它更加准确,包括需要将主页url包含项置于其余部分之下。
这是我的新portal / urls.py文件供参考
文件:/portal/urls.py
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls), name='admin'),
url(r'^inventory/', include('inventory.urls'), name='inventory'),
url(r'^dashboard/', include('dashboard.urls'), name='dashboard'),
url(r'^capacity/', include('capacity.urls'), name='capacity'),
url(r'^', include('home.urls'), name='home'),
)
最佳答案
问题出在您的第一个模式,该模式仅与空URL匹配。因此,任何空URL都会导致对home/urls.py
URL进行分析,但只有空URL才能匹配。
不幸的是,如果没有公共前缀,则该模式"^"
将与每个URL匹配(因为它们都始于开头...)。
因此,您应该在所有页面上使用通用前缀,或者将原始URL规范放在末尾,以使其他URL有机会在测试之前进行匹配。
关于python - Django“首页”应用urls.py问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24639300/