把django admin的文档docs调出来!

作者: huyoo
发布时间:2015-07-29 11:32:59

我的意思就是进入了django的admin后台管理之后,可以参考django给的admindocs

怎么弄呢?大家可以参考django官方网站的一个教程2:http://docs.djangoproject.com/en/dev/intro/tutorial02/

里面有怎么激活后台管理的部分,可以先打个底.

 

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/(.*)', admin.site.root),
)
注意上面的代码,有# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
是被注释掉的,可以将 # 号删除,这样就可以把url打开了,同时上面说还要在settings.py中的INSTALLED_APPS中加入一个app,就是'django.contrib.admindocs'
完成了上面说的东西之后,我们就可以在登录admin后台之后,访问一些非常有参考价值的docs了.
需要注意的几个问题是:
1,需要docutils这个模块的支持.下载地址是: http://docutils.sf.net/ 
2.一定要注意(r'^admin/doc/', include('django.contrib.admindocs.urls')),放的位置(或者说顺序),注意,一定要放在(r'^admin/(.*)', admin.site.root),代码行的上面,放在下面的话,会引起404错误,也就是说找不到docs了.
具体的原因就是:(r'^admin/(.*)', admin.site.root),这一行中的r'^admin/(.*)'中的这个(.*)正则表达式的含义就是说匹配任何admin/下的任何东西any thing,所以(r'^admin/doc/', include('django.contrib.admindocs.urls')),
如果放在它的下面的话,由于解析的原因,它就会被admin/(.*)所掩盖,从而被忽略掉.我就是因为放在下面,好几天都没有解决,也找不到为什么会这样原因,后来看教程,仔细比对才发现是这么回事.
如果你把(.*)删除的话,你的admin后台就会用不了,会报错,那么docs就更用不了了.
那么是不是docs的url放在admin(.*)下面就永远不能用admindocs呢?那肯定也不是的,我已经试验出来了,只要把r'^admin/doc'这个正则url改掉,比如说r'^admindoc' ,就可以使用admindocs,总的来说它的url就不要放在'admin/'的后面就行,因为admin(.*)放在上面就匹配了所有的东西了.这个上面已经讲过一回了.
为什么说admin(.*)是匹配所有的东西呢?在下载回来的django包中有一个docs目录,在子目录ref/contrib/下有一个admin.txt,其中有这样一段话:
In this example, we register the default ``AdminSite`` instance
``django.contrib.admin.site`` at the URL ``/admin/`` ::
    # urls.py
    from django.conf.urls.defaults import *
    from django.contrib import admin
    admin.autodiscover()
    urlpatterns = patterns('',
        ('^admin/(.*)', admin.site.root),
    )
Above we used ``admin.autodiscover()`` to automatically load the
``INSTALLED_APPS`` admin.py modules.
In this example, we register the ``AdminSite`` instance
``myproject.admin.admin_site`` at the URL ``/myadmin/`` ::
    # urls.py
    from django.conf.urls.defaults import *
    from myproject.admin import admin_site
    urlpatterns = patterns('',
        ('^myadmin/(.*)', admin_site.root),
    )
There is really no need to use autodiscover when using your own ``AdminSite``
instance since you will likely be importing all the per-app admin.py modules
in your ``myproject.admin`` module.
Note that the regular expression in the URLpattern *must* group everything in
the URL that comes after the URL root -- hence the ``(.*)`` in these examples.
注意上面最后一段加粗的部分,你就会明白了.
好了废话不多说了,看看我把admindocs搞出来的截图吧:
 http://p.blog.csdn.net/images/p_blog_csdn_net/huyoo/EntryImages/20080926/admindocs.jpg
 贴图贴不上去,贴个链接吧,自己看

版权声明:本文为博主原创文章,未经博主允许不得转载。

标签: Django Go
来源:http://blog.csdn.net/huyoo/article/details/2984979

推荐: