如何在django中包含urlpatterns?

abh*_*rld 2 django django-urls django-admin

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

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

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

我正在尝试在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}),
        )
Run Code Online (Sandbox Code Playgroud)

但在此之后,我可以调用MainSite的(应用程序)视图,但我的管理员网址无法正常工作

urlpatterns = patterns('',
        (r'^$', include('myproject.MainSite.urls')),
        url(r'^admin/', include(admin.site.urls)),
    )
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*att 10

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

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

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    (r'', include('myproject.MainSite.urls')),
)
Run Code Online (Sandbox Code Playgroud)

然后,您的视图将只捕获管理员没有的任何内容.