Python “Django”;主页「;app url.py问题
我是Django的新手,当我布置我的网站时,我是用以下方式做的: 这个项目是一个“门户网站”Python “Django”;主页「;app url.py问题,python,django,Python,Django,我是Django的新手,当我布置我的网站时,我是用以下方式做的: 这个项目是一个“门户网站” app1“home”是一个包含主页、登录和注册的应用程序 以及其他“站点范围”功能 App 2“存货”是一种基本资产存货 App 3“仪表板”是一组基于库存资产的状态仪表板 现在我正在尝试添加登录功能,我有一个主项目urls.py,如下所示: 文件:/portal/url.py from django.conf import settings from django.conf.urls import
- app1“home”是一个包含主页、登录和注册的应用程序 以及其他“站点范围”功能
- App 2“存货”是一种基本资产存货
- App 3“仪表板”是一组基于库存资产的状态仪表板
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'),
)
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'),
)
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'),
)
我的计划是使用…/home/url.py来管理任何站点范围的功能,如登录、注册等
现在home index视图显示的很好,但是…/home/url.py中的任何其他内容都会给我一个404
文件:/home/url.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'),
)
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'),
)
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'),
)
在这一点上,我想我的问题是双重的:我的做法正确吗?如果是,如何获得所需的功能?如果没有,我应该如何改变事情的设置/布置方式,以正确的“最佳实践”方式进行
提前谢谢
编辑
多亏了dt0xff和holdenweb,它才得以工作,接受了holdenweb的答案,因为它更准确,包括需要将主url包含放在其他url的下面
这是我的新门户/url.py文件,供参考
文件:/portal/url.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'),
)
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'),
)
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'),
)
Django在URL中的外观如下:
url(r'^$', include('home.urls'), name='home'),
我是说,这里
'^$'
您希望url匹配“url的开始和结束”。它对root(dunno.com/
)很好,但对其他人却不行,因为url将包含更多内容
所以,只要删除$
,就可以了
url(r'^', include('home.urls'), name='home'),
问题在于您的第一个模式,它将只匹配空URL。因此,任何空URL都会导致分析
home/urls.py
URL,但即使在这种情况下,也只有空URL会匹配
不幸的是,如果没有公共前缀,那么模式“^”
将匹配每个URL(因为它们都从开头开始…)
因此,您应该为所有页面使用一个公共前缀,或者在测试之前将home URL规范放在末尾,以使其他URL有机会匹配。您永远不需要在project/URLs.py添加正则表达式($),尽管即使空字符串有一个开头,此模式也会匹配所有字符串。因此,顶级列表中的任何其他URL都不可能匹配,因此我建议对列表重新排序。请在回答中添加解释。