2

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

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

但是为了让它在我的系统上工作,我不得不取消注释以下行:

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

有人可以告诉我有什么区别吗?

4

4 回答 4

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 之前的 Django 版本被合并,在 1.0 之前,used admin.urls,not admin.site.urlsor admin.site.root。)

于 2009-06-03T18:45:49.993 回答
4

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

有效,但已弃用:

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

不正确,部分有效:

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

正确,并且效果很好:

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

于 2011-03-09T00:29:25.190 回答
0

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

比较0.96.3 的 admin 目录和1.0.2的对应目录。后者没有urls.py

于 2009-06-03T18:17:02.500 回答
0

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

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

[...] 方法可以用作 Django 视图函数,为已注册模型的集合提供完整的管理界面。

于 2009-06-03T18:25:09.787 回答