Python Django admindoc未呈现重构文本

Python Django admindoc未呈现重构文本,python,django,restructuredtext,docstring,Python,Django,Restructuredtext,Docstring,我使用django admindocs进行文档编制,基本功能运行良好(我可以访问文档页面,列出模型并进行文档编制,包括帮助文本等) 不幸的是,DocString中的reStructuredText标记被完全忽略,例如 超链接不会转换为超链接 项目清单不是项目清单 Django标记,例如:model:appname.ModelName未解析 我正在使用Django(1.7)的开发主干版本 下面是我正在使用的docstring示例: class Adresse(models.Model):

我使用django admindocs进行文档编制,基本功能运行良好(我可以访问文档页面,列出模型并进行文档编制,包括帮助文本等)

不幸的是,DocString中的reStructuredText标记被完全忽略,例如

  • 超链接不会转换为超链接
  • 项目清单不是项目清单
  • Django标记,例如:model:
    appname.ModelName
    未解析
我正在使用Django(1.7)的开发主干版本

下面是我正在使用的docstring示例:

class Adresse(models.Model):

    u"""Postanschrift

    Wird für 
     - Organisationen 
     - Personen 

    genutzt.

    Siehe auch https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations 

    """

    object_id    = models.PositiveIntegerField()
    content_type = models.ForeignKey(ContentType)
    of           = generic.GenericForeignKey('content_type', 'object_id' )
    ...
当我将上面的docstring内容粘贴到rest编辑器(我使用过)中时,一切都按预期进行

转换适用于docstring文档化方法,例如

def my_method(self):
    """Docstring Heading

    1. Listitem 1
    2. Listitem 2

    refers to :model:`personen.Person`
    """
    pass
它被正确地转换了

我确信,我错过了一些非常明显的东西,不是吗?

那么admindocs模块的行为与Django 1.4中的行为相同

  • 要从python文件自动生成可导航的文档,python Sphinx可能是一种更好的方法,将生成的文件放在另一个伪静态文件夹中。
    为此,请将sphinx文档复制到模板文件夹中,并添加一个自定义的
    URL(..)
    视图
    ,该视图提供对文件的访问,并且仅对员工设置了限制(例如,通过canonical decorators
    login\u required
    用户权限测试
其他解决方案:

不幸的是,有关rst使用的文档有点缺乏,例如
settings.py
参数
restructedText\u FILTER\u设置

请放心,为了激活这些过滤器,
django.contrib.markup'
已添加到您的settings.py和模板中的
{%load markup%}
中的
已安装的应用程序设置中

您应该安装了
docutils
。如果未安装,您将不会收到错误。 将linux与bash一起使用时,输入:

if [[ -z `pip freeze | grep docutils` ]];  then sudo easy_install docutils;fi;

直接呈现重组文本:

来自django导入模板的

class Adresse(models.Model):
    doc = u"""Postanschrift

    Wird für 
     - Organisationen 
     - Personen 
    """
t = template.Template('{% load markup %}{{ contentstr|restructuredtext }}')
c = template.Context({'contentstr': doc})
__doc__ = t.render(c)
您可以通过在所有[相关]模型及其
\uuuuuuu docs\uuuuuu
属性之间循环来自动执行此操作,以便随后将字符串呈现为重构文本,如下所示:

from django.conf import settings
from django.db.models import get_app, get_models
from django import template

for appname in settings.INSTALLED_APPS:
  app = get_app(appname )
  for model in get_models(app):
    if hasattr(model, '__doc__') and model.__doc__ != "":
      t = template.Template('{% load markup %}{{ contentstr|restructuredtext }}')
      c = template.Context({'contentstr': model.__doc__})
      model.__doc__ = t.render(c)

谢谢你详尽的回答!我将深入研究上面提到的选项,并给出对我有用的反馈!