如何在django中包含urlpatterns?

时间:2012-02-10 15:40:51

标签: django django-admin django-urls

在我的项目中,我有一个应用程序,它有自己的urls.py,就像这样

urlpatterns = patterns('',
(r'^(?P<language>\w+)/$', 'MainSite.views.home_page'),)

(上面的文件在我的申请表中)

我正在尝试在main(项目的)urls.py中包含此文件 像这样:

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'', include('myproject.MainSite.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

if settings.DEBUG :
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', 
{'document_root': settings.MEDIA_ROOT}),
        )

但在此之后我可以调用MainSite的(应用程序)视图,但我的管理员网址无效 我试过了

urlpatterns = patterns('',
        (r'^$', include('myproject.MainSite.urls')),
        url(r'^admin/', include(admin.site.urls)),
    )

但在此之后这会使管理工作,但我的应用程序的视图将不会被调用, 我该如何解决这个问题。

1 个答案:

答案 0 :(得分:10)

您在根级别包含了您的观点。由于它位于管理员的urlpattern之前,因此第一个urlpattern捕获所有内容,因此没有任何内容传递给管理员视图。

最简单的解决方法是简单地颠倒顺序:

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    (r'', include('myproject.MainSite.urls')),
)

然后,您的观点将只捕获管理员没有的任何内容。