我正在尝试从我的应用程序支持的所有 URL 的代码中自动创建文档。我们完全使用客户端 MVC,因此支持的每个 URL 本质上都是 UI 的 REST API。有没有一种简单的方法可以从这些 URL 生成文档?
到目前为止,我编写了这个小模块,但我正在寻找更好的方法。如果已经存在类似的东西,我不想重新发明轮子。
更新:请注意,其目的是为网站的消费者提供公共文档,而不是供内部使用。在这方面,对于每个 URL,我们需要记录: - 响应是什么, - 接受哪些参数, - URL 是否响应 GET/POST 或两者,等等。
某些 URL(如 (^$) 仅重定向到主页不应记录在案,因此我还需要一些排除机制。
from django.core.management.base import BaseCommand
from django.conf import settings
class Command(BaseCommand):
''' Generates documentation for the URLs. For each URL includes the documentation from
the callback implementing the URL and prints the default arguments along with the URL pattern and name'''
def handle(self, *args, **options):
url_module = None
exec 'import '+settings.ROOT_URLCONF+'; url_module='+settings.ROOT_URLCONF
doc = file('doc.html','w')
doc.write("<table border=1 cellspacing=0 cellpadding=5>")
doc.write("<tr><th>URL Pattern<th>Name<th>Documentation<th>Parameters")
for x in url_module.urlpatterns:
doc.write("<tr>")
doc.write("<td>")
doc.write(x._regex)
doc.write("<td>")
doc.write(str(x.name))
try:
documentation = str(x.callback.__doc__)
doc.write("<td><pre>")
doc.write(documentation)
doc.write("</pre>")
except:
doc.write("<td> Unable to find module")
doc.write("<td>")
doc.write(str(x.default_args))
doc.write("</table>")
doc.close()