自从 2019 年 6月弃用django-rest-swagger以来,我将回答我的问题,我刚刚找到了 2 个可行的解决方案。
第一个将全局更改 UI 。
在ping.views
(或您希望的任何其他位置)添加以下课程。
from rest_framework.schema import AutoSchema
class CustomSchema(AutoSchema):
def __init__(self):
super(CustomSchema, self).__init__()
def get_manual_fields(self, path, method):
extra_fields = [
coreapi.Field('command', required=True, location='form', schema=String(), description='', type='', example='',
coreapi.Field('params', required=False, location='form', schema=String(), description='', type='', example='',
]
manual_fields = super().get_manual_fields(path, method)
return manual_fields + extra_fields
settings.py
在Django 项目中添加以下设置。
REST_FRAMEWORK = {
# Corresponding path to where you added the class
'DEFAULT_SCHEMA_CLASS': 'ping.views.CustomSchema',
}
第二种解决方案可以按视图应用。您可以在这里查看官方指南
使用 @schema fromrest_framework.decorators.schema
覆盖DEFAULT_SCHEMA_CLASS
。
@api_view(['POST'])
@schema(CustomSchema())
def your_view(request):
print(request.body)
return JsonResponse({'task_status': 200'})
基本上,这个想法是覆盖DEFAULT_SCHEMA_CLASS
. 这个词schema
是他们用来指代rest_framework
.
当你@api_view()
用来装饰你的基于函数的视图时,它会为你的函数分配一个属性schema
,其值APIView.schema
来自rest_framework.views.APIView
.
rest_framework.views.APIView
将进一步调用DefaultSchema()
以DEFAULT_SCHEMA_CLASS
从您的REST_FRAMEWORK
配置中加载settings.py
.
无其他说明,DEFAULT_SCHEMA_CLASS
以rest_framework.schemas.openapi.AutoSchema
本官方公告为准。您可能希望将其更改为,rest_framework.schemas.coreapi.AutoSchema
因为它与django_rest_swagger
.
希望本教程可以帮助那些在 Django 项目中使用基于函数的视图的django-rest-swagger (2.2.0)
人。
如果有什么我可以在这个问题上提供帮助的,请留下评论。