Django Rest Framework-如何在基于函数的视图中基于请求操作实现不同的架构?

时间:2019-01-03 12:35:35

标签: django swagger

我正在尝试在Swagger UI页面中显示基于功能的视图。该视图是旧版代码的一部分(真实代码,而不是下面显示的代码),并且支持GETPOST操作。

@schema(foo_schema)
def foo(request):
    if request.method == 'GET':
        param1 = request.query_params.get('param1')
        # do something
    elif request.method == 'POST':
        param1 = request.data.get('param1')
        # do something
    ...

param1GET操作都需要参数POST,所以我最初的尝试是在模式中用两次不同的位置参数指定两次:

foo_schema = AutoSchema(
    manual_fields=[
        coreapi.Field(
            name='param1',
            location='query',
            required=True,
            schema=coreschema.Integer(),
        ),
        coreapi.Field(
            name='param1',
            location='formData',
            required=True,
            schema=coreschema.Integer(),
        ),
        ...
    ]
)

问题是,摇摇欲坠的UI只能将字段作为表单数据显示一次。因此,即使我尝试使用GET请求通过招摇访问端点,该参数也将包含在request.data变量中,而不包含在request.query_params中,就像输入的数据始终是一部分一样POST请求中。同样,如果我删除了架构中的第二个字段规范,则该参数将始终位于request.query_parames中,就像请求始终为GET一样。

如何在招摇中同时指定两个字段?或者更好的是,我如何只显示一个字段,但要确保将GET参数转到request.query_params,并且将POST参数转到request.data

0 个答案:

没有答案