我是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/

10-12 03:56
查看更多