Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django admin在urlpatterns中使用include时失败_Django_Django Urls - Fatal编程技术网

Django admin在urlpatterns中使用include时失败

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

我正在尝试对我的应用程序进行一点重构,以防止它变得过于笨拙。因此,我开始按照文档的建议,将一些urlpatterns移到子文件中

除此之外,它似乎不起作用,项目没有被重新路由,但当我转到管理员时,它说“urlpatterns尚未定义”

我在应用程序根目录下的url.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}),
而应用程序提供的服务属于商业范畴

另外一个问题是,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等等,是的,我确实误解了关于切掉的部分,我认为这只是指后面的斜杠。谢谢