如何让Sphinx不解析Django项目DocString直接渲染为普通文本
解决方案
方案1:修改Sphinx配置(无需改动项目源码,推荐)
你可以通过Sphinx的事件钩子自动处理目标docstring,不需要修改Django项目的原有代码,操作如下:
打开Sphinx项目下的conf.py文件,在末尾添加如下代码:
def process_raw_docstring(app, what, name, obj, options, lines): # 仅处理porter.urls模块的docstring,如需要全局生效可删除该判断 if name == "porter.urls": # 将docstring包装为纯文本代码块,完全保留原有格式 lines.insert(0, ".. code-block:: text") lines.insert(1, "") for idx in range(2, len(lines)): lines[idx] = " " + lines[idx] def setup(app): app.connect("autodoc-process-docstring", process_raw_docstring)
修改完成后重新构建文档即可,原有docstring会作为预格式化文本原样渲染,不会触发reStructuredText语法校验和相关警告。
方案2:局部修改docstring(适合少量文件场景)
如果可以接受少量修改原有代码,直接在对应docstring的开头添加.. parsed-literal::标记和一个空行即可,示例:
""" .. parsed-literal:: URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') # 剩余原有内容保持不变 """
该标记会通知Sphinx直接渲染后续内容,不做语法解析。
内容的提问来源于stack exchange,提问作者Zhao Li
相关产品推荐
相关产品推荐

