【发布时间】:2011-01-28 17:51:57
【问题描述】:
我正在尝试稍微重构我的应用程序,以防止它变得过于笨拙。所以我开始按照文档的建议将一些 urlpatterns 移到子文件中。
除了它似乎不起作用(这些项目没有被重新路由)的事实之外,但是当我进入管理员时,它说'urlpatterns has not been defined'。
我的应用程序根目录中的 urls.py 是:
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}),
到目前为止,我移出的网址是结帐/优惠/订单,它们都是“商业”的子应用程序,其中应用程序的 urls.py 非常清楚。
/urls.py 中的问题(包含在此处)
/commerce/urls.py 我要包含的 urls.py 是:
order_info = {
'queryset': Order.objects.all(),
}
urlpatterns+= patterns('',
(r'^offers/$','offers.views.start_offers'),
(r'^offers/([a-zA-Z0-9-]*)/order/(\d*)/add/([a-zA-Z0-9-]*)/(\w*)/next/([a-zA-Z0-9-)/$','offers.views.show_offer'),
(r'^reports/orders/$', list_detail.object_list,order_info),
)
应用程序提供的服务属于商业。
另外一个问题是管理员根本无法工作,所以我在想是因为我在某个地方用我的包含杀死了它。
我检查过的内容: urlpatterns 变量是否意外在某处重置(即 urlpatterns = 模式,而不是 urlpatterns+= 模式) commerce.urls 中的模式是否有效(是的,当移回根目录时它们有效)。
所以从那里我很难过。我可以将所有内容移回根目录,但我试图稍微解耦,不仅仅是出于理论上的原因,还有一些短期原因。
最后,如果我输入 www.domainname/checkout/orderform/onepage/xxxjsd 我会得到正确的页面。但是,输入 www.domainname/checkout/ 由 alchemysites.views.get_path 处理。
如果不是答案(因为这是非常具体的),那么有没有解决 urls.py 问题的好方法?这似乎只是反复试验。似乎应该有某种解析器会告诉你你的 urlpatterns 会做什么。
【问题讨论】:
标签: django django-urls