Django admin在urlpatterns中使用include时失败
我正在尝试对我的应用程序进行一点重构,以防止它变得过于笨拙。因此,我开始按照文档的建议,将一些urlpatterns移到子文件中 除此之外,它似乎不起作用,项目没有被重新路由,但当我转到管理员时,它说“urlpatterns尚未定义” 我在应用程序根目录下的url.py是:Django admin在urlpatterns中使用include时失败,django,django-urls,Django,Django Urls,我正在尝试对我的应用程序进行一点重构,以防止它变得过于笨拙。因此,我开始按照文档的建议,将一些urlpatterns移到子文件中 除此之外,它似乎不起作用,项目没有被重新路由,但当我转到管理员时,它说“urlpatterns尚未定义” 我在应用程序根目录下的url.py是: if settings.ENABLE_SSL: urlpatterns = patterns('', (r'^checkout/orderform/onepage/(\w*)/$','checkout.views.o
if settings.ENABLE_SSL:
urlpatterns = patterns('',
(r'^checkout/orderform/onepage/(\w*)/$','checkout.views.one_page_orderform',{'SSL':True},'commerce.checkout.views.single_product_orderform'),
)
else:
urlpatterns = patterns('',
(r'^checkout/orderform/onepage/(\w*)/$','commerce.checkout.views.single_product_orderform'),
)
urlpatterns+= patterns('',
(r'^$', 'alchemysites.views.route_to_home'),
(r'^%s/' % settings.DAJAXICE_MEDIA_PREFIX, include('dajaxice.urls')),
(r'^/checkout/', include('commerce.urls')),
(r'^/offers',include('commerce.urls')),
(r'^/order/',include('commerce.urls')),
(r'^admin/', include(admin.site.urls)),
(r'^accounts/login/$', login),
(r'^accounts/logout/$', logout),
(r'^(?P<path>.*)/$','alchemysites.views.get_path'),
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.MEDIA_ROOT}),
而应用程序提供的服务属于商业范畴
另外一个问题是,admin根本不起作用,所以我在想,因为我用我的include在某个地方杀死了它
我检查过的东西:
urlpatterns变量是否意外地在某个地方重置,即urlpatterns=patterns,而不是urlpatterns+=patterns
commerce.url中的模式有效吗?是的,当移回根目录时,这些模式有效
因此,从那里我被难住了。我可以把所有的东西移回根,但是我试着去耦合,不仅仅是为了理论上的原因,而是为了一些短期的原因
最后,如果我输入www.domainname/checkout/orderform/onepage/xxxjsd,我会得到正确的页面。但是,输入www.domainname/checkout/将由alchemysites.views.get\u路径处理
如果不是答案,因为这是非常具体的,那么有没有一个解决URL.py问题的好方法?这似乎只是尝试和错误。似乎应该有某种解析器来告诉您urlpatterns将做什么。看看django文档。我想你可能误解了他们。特别是 每当Django遇到include时,它就会切掉与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf进行进一步处理 举个例子,你有
(r'^/checkout/', include('commerce.urls')),
(r'^/offers',include('commerce.urls')),
(r'^/order/',include('commerce.urls')),
这意味着
/checkout/offers/
/offers/offers/
/order/offers/
将全部匹配commerce/url.py中的url模式r“^offers/$”、“offers.views.start_offers”
如果要在commerce.py中定义/checkout/in的视图,则需要添加该模式
(r'^$', 'path_to_your_view')
因为/checkout/部分将被include截断
作为旁白:
在/commerce/url.py中,使用
对于您定义的第一个模式。然后,您可以稍后在同一个文件中使用urlpatterns+=查看django文档。我想你可能误解了他们。特别是 每当Django遇到include时,它就会切掉与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf进行进一步处理 举个例子,你有
(r'^/checkout/', include('commerce.urls')),
(r'^/offers',include('commerce.urls')),
(r'^/order/',include('commerce.urls')),
这意味着
/checkout/offers/
/offers/offers/
/order/offers/
将全部匹配commerce/url.py中的url模式r“^offers/$”、“offers.views.start_offers”
如果要在commerce.py中定义/checkout/in的视图,则需要添加该模式
(r'^$', 'path_to_your_view')
因为/checkout/部分将被include截断
作为旁白:
在/commerce/url.py中,使用
对于您定义的第一个模式。然后,您可以稍后在同一文件中使用urlpatterns+=将以下行添加到my urls.py中对我很有用:
from django.conf.urls import include
在my urls.py中添加以下行对我很有用:
from django.conf.urls import include
是的,就是这样。我把这些部分移到了commerce.checkout.url等等,是的,我确实误解了关于切掉的部分,我认为这只是指后面的斜杠。谢谢,就是这样。我把这些部分移到了commerce.checkout.url等等,是的,我确实误解了关于切掉的部分,我认为这只是指后面的斜杠。谢谢