admin.site.root和admin.site.urls之间的区别

时间:2009-06-03 18:04:09

标签: django django-admin django-urls

在第6章关于管理站点的The Django Book中,他们告诉我将以下URL设备添加到urls.py:

urlpatterns = patterns('',
    # ...
    (r'^admin/', include(admin.site.urls)),
    # ...
)

但是要使它在我的系统上运行,我必须取消注释以下行:

(r'^admin/(.*)', admin.site.root),

有人可以告诉我这些差异是什么吗?

4 个答案:

答案 0 :(得分:7)

不幸的是,加布里埃尔和安蒂都错了。

admin.site.root是版本1.0的行为。如果您已下载1.0或1.0.2,那就是您应该使用的。

然而,最近Django管理员的URL处理发生了一些变化,这些变化是尚未发布的1.1的一部分。这些主要是为了使用reverse()函数来查找管理URL。因此,如果您最近检查了代码,则需要使用admin.site.urls

您的链接是Django Book的第二版,正在针对1.1版进行更新 - 而Gabriel所引用的文档也适用于当前的结帐,其中包含新版本。

(为了完整起见,我注意到在newforms-admin合并之前,在1.0之前,Django的版本使用admin.urls,而不是admin.site.urlsadmin.site.root。)

答案 1 :(得分:4)

请注意以下事项;我因为(。*)在下面的第二个条目中而挣扎。

Works,但已弃用:

urlpatterns = patterns('',
     (r'^ admin /(.*)',admin.site.root)), )

不正确,部分有效:

urlpatterns = patterns('',
     (r'^ admin /(.*)',include(admin.site.urls)), )

正确,运作良好:

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

答案 2 :(得分:0)

Django Book讲的是版本0.9.6。从那时起,管理员就被重写了。在Django 1.0中,整个管理员由一个视图(admin.site.root)提供服务,该视图在内部解析其余的URL。

admin directory of 0.96.3corresponding directory from 1.0.2进行比较。后者没有urls.py

答案 3 :(得分:0)

来自admin.site.root函数的源代码:

  

root(self,request,url):处理管理员应用的主要URL路由。

     

[...]方法可以用作   Django查看功能,提供了一个   完整的管理界面   收集注册模型。