第二十二课 Django Admin文档生成器

第二十二课 Admin文档生成器

Django的admindocs应用可以从模型、视图、模板标签等地方获得文档内容

1. 概览

要激活admindocs,请按下面的步骤操作:

  • INSTALLED_APPS内添加django.contrib.admindocs

  • urlpatterns内添加path('admin/doc/',include('django.contrib.admindocs.urls')),确保它处于'admin/'条目之前

  • 安装Python的docutils模块(pip install docutils)

  • 可选:想使用admindocs的书签小工具,需要安装django.contrib.admindocs.middleware.XViewMiddleware

如果上述步骤顺利完成,那么你可以从admin界面访问doc界面,也可以直接访问/admin/doc,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvMmoriI-1608308304911)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092811371-1753968659.png)]

它看起来是下面的样子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VoUINdNR-1608308304912)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092817499-1378427183.png)]

下面的这些特殊标记,可帮助你在文档字符串中,快速创建指向其它组件的链接:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MDMbch1p-1608308304913)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092822085-1041746405.jpg)]

2. 模型

在doc页面的模型部分,列出了所有的模型,点击可以查看具体的字段等细节信息。信息主要来自字段的help_txt部分和模型方法的docstring部分。如下面图中展示:

有用的帮助信息看起来是这个样子的:


class BlogEntry(models.Model):

    """

    Stores a single blog entry, related to :model:`blog.Blog` and

    :model:`auth.User`.

    """

    slug = models.SlugField(help_text="A short label, generally used in URLs.")

    author = models.ForeignKey(

        User,

        models.SET_NULL,

        blank=True, null=True,

    )

    blog = models.ForeignKey(Blog, models.CASCADE)

    ...



    def publish(self):

        """Makes the blog entry live on the site."""

        ...

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vSbiY4iT-1608308304914)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092829356-137305145.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqhEVMHs-1608308304915)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092832783-1191723425.png)]

3. 视图

站点内的每个URL都会在doc内享有一个页面,点击某个URL将会展示对应的视图信息。主要包括下面这些信息:

  • 视图功能的简单描述

  • 上下文环境,或者视图模块里的变量列表

  • 视图内使用的模板

例如:


from django.shortcuts import render



from myapp.models import MyModel



def my_view(request, slug):

    """

    Display an individual :model:`myapp.MyModel`.



    **Context**



    ``mymodel``

        An instance of :model:`myapp.MyModel`.



    **Template:**



    :template:`myapp/my_template.html`

    """

    context = {'mymodel': MyModel.objects.get(slug=slug)}

    return render(request, 'myapp/my_template.html', context)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h7SEkIfh-1608308304916)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092838921-981715607.png)]

4. 模板标签和过滤器

所有Django内置的或者你自定义的或者第三方app提供的标签和过滤器都将在页面内展示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmQFrbqg-1608308304918)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092843242-1142923600.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W46yaeTU-1608308304919)(/home/pyvip/py_case/python 笔记/图片/1762677-20201006092847552-877294534.png)]

猜你喜欢

转载自blog.csdn.net/zly717216/article/details/111398991
今日推荐