Я отвечу на мой вопрос, так как django-rest-swagger был устарел в июне 2019 , и я только что нашел 2 возможных решения.
Первоеизменит пользовательский интерфейс глобально .
В 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 из rest_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-rest-swagger (2.2.0)
с function-основанные взгляды на их проект Django.
Пожалуйста, оставляйте комментарии, если есть что-то, что я могу помочь в этом вопросе.