使用admindocs在Django项目中自动生成文档

这是有关Django自带的官方文档工具admindocs的介绍。

通过添加少量设置,Django管理站点可以自动生成关于部分代码的文档。

确认版本动作

    • Python: 3.12.1

 

    Django: 5.0
※据悉,admindocs功能似乎从Django1.x版本以来就存在。至少Django1.8的文档中有相关记载。

生成的页面示例

スクリーンショット 2023-12-13 18.42.15.png

在页面的标题部分添加了一个名为“文档”的链接。通过这个链接,您可以从管理网站的每个页面访问文档页面。

如同截图所示,admindocs会为以下元素生成文档。

    • テンプレートタグ

 

    • テンプレートフィルタ

 

    • モデル

 

    ビュー

底部的书签是一个可以从Django应用程序的页面跳转到相应视图文档页面的书签工具。

模型文件页面示例

除了模型(Model)之外的三个部分(模板标签,模板过滤器,视图),会将每个定义的类和函数的文档字符串提取并汇总成列表。
而对于模型(Model),除了提取模型类的文档字符串之外,还会自动将每个字段的信息转换为表格形式。

以下是模型类的示例以及生成的文档。

class Author(models.Model):
    """ 著者情報

    .. reStructuredTextでdocstringを書くことで、admindocs上でレンダリングされます。

    * この `Author` クラスは、著者情報を管理するモデルです。

      * 説明~~~~~~~~~~~~
    
    * 説明~~~~~~~~~~~~

    """
    name = models.CharField(max_length=64, unique=True, help_text="名前")
    country = models.ForeignKey(Country, on_delete=models.SET_NULL, help_text="", null=True)
    birthday = models.DateField(help_text="誕生日")
    death_day = models.DateField(help_text="死亡日", null=True, blank=True)

    @property
    def is_alive(self):
        """存命かどうかを返す

        ::

            author = Author(name="夏目漱石", birthday=date(1867, 2, 9), death_day=date(1916, 12, 9))
            author.is_alive # False 
        """
        return self.death_day is None


class Book(models.Model):
    """書籍情報"""

    name = models.CharField(max_length=64, unique=True, help_text="名前")
    author = models.ForeignKey(Author, on_delete=models.SET_NULL, help_text="著者", null=True)

スクリーンショット 2023-12-13 19.16.26.png

对于每个字段,它会获取名称、类型和help_text,并将它们整理在表中。
它还会包括使用@property定义的字段以及对Book模型进行反向引用的字段,它们引用了Author模型。

设置程序

在文件中有设置的说明。

settings.pyのINSTALLED_APPSに以下を追加

“django.contrib.admindocs”

urls.pyに以下を追加

path(‘admin/doc/’, include(‘django.contrib.admindocs.urls’))

/adminより前に定義する必要がある

docutilsパッケージ(0.19以上)をインストール

如果要使用书签小工具功能,请进一步设置以下内容。

settings.pyのMIDDLEWAREに以下を追加

django.contrib.admindocs.middleware.XViewMiddleware

请注意,虽然文件中没有记录,但如果要使用代码块语法,请确保安装了Pygments。
Pygments是一个用于语法分析的库,但即使安装了它,至少在默认情况下似乎不会进行语法高亮显示。
(取决于管理员页面的CSS设置,可能会进行语法高亮显示吗……?)

总结

由于admindocs被认为知名度较低,且能够以较少的工作量生成文档,因此我写了一篇介绍文章。尽管在文档齐全的项目中可能不会有太多好处,但在个人开发或小规模开发中,可能有时候可以使用admindocs来完成需求。

广告
将在 10 秒后关闭
bannerAds