Sphinx Autoflask - 在同一函数上区分GET和POST请求的文档字符串

时间:2016-11-22 14:52:14

标签: python flask python-sphinx

我有一个Flask应用程序我正在为via python-sphinx构建文档。

我目前正在使用sphinxcontrib.autohttp.flask

中的autoflask扩展程序

我的问题是:我如何准备一个docstring,它正确地将不同的信息应用于同一路线的GET版本和POST版本。

例如一个小函数:

@app.route('/add_event', methods=['GET', 'POST'])
def add_event():
    """
    ..http:get:: /add_event
        :return: Test
    ..http:post:: /add_event
        :return: Test2
    """
    if request.method == 'GET':
        # get some things
        person_id = request.args.get('id')
        return render_template('create_event.html', race_event_form=test_form)
    if request.method == 'POST':
        # post some things

        return redirect('/person_profile/id/{0}'.format(request.args.get('id')))

我目前在conf.py

中的扩展程序
extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.ifconfig',
    'sphinx.ext.viewcode',
    'sphinx.ext.githubpages',
    'sphinxcontrib.httpdomain',
    'sphinxcontrib.autohttp.flask',
    'sphinxcontrib.autohttp.flaskqref'
]

狮身人面像输出看起来像

enter image description here

是否可以为GET选择一件事,为POST设置另一件事?我真的想避免将每个函数分成两个单独的get / post函数。

此外,是否可以通过request.argsrequest.form通过GET请求中的person_id变量传递autoflask输出所需的参数?

1 个答案:

答案 0 :(得分:0)

尝试从Flask autodoc中删除重载的视图功能,并单独定义请求,同时保留自动生成的其余API。

这是一个例子......

conf.py中(插件的顺序 很重要):

extensions = [
    'sphinx.ext.autodoc',
    'sphinxcontrib.httpdomain',
    'sphinxcontrib.autohttp.flask',
]

在reStructuredText文件中:

API
===

.. autoflask:: path.to.your:app
  :undoc-static:
  :undoc-endpoints: your_view_method

.. http:get:: / your_view_endpoint

  Some docstring you wrote.

.. http:post:: / your_view_endpoint

  Another docstring you wrote.

关于第二个问题,您可以查看httpdomain here的指示。