在第6章关于管理站点的The Django Book中,他们告诉我将以下URL设备添加到urls.py:
urlpatterns = patterns('',
# ...
(r'^admin/', include(admin.site.urls)),
# ...
)
但是要使它在我的系统上运行,我必须取消注释以下行:
(r'^admin/(.*)', admin.site.root),
有人可以告诉我这些差异是什么吗?
答案 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.urls
或admin.site.root
。)
答案 1 :(得分:4)
请注意以下事项;我因为(。*)在下面的第二个条目中而挣扎。
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.3与corresponding directory from 1.0.2进行比较。后者没有urls.py
。
答案 3 :(得分:0)
来自admin.site.root
函数的源代码:
root(self,request,url):处理管理员应用的主要URL路由。
[...]方法可以用作 Django查看功能,提供了一个 完整的管理界面 收集注册模型。