В настоящее время я использую DRF 3.7.7 и Django-rest-swagger 2.1.2, следующим образом.
settings.py
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'api_key': {
'type': 'apiKey',
'in': 'header',
'name': 'Authorization'
}
},
# 'LOGIN_URL': getattr(settings, 'LOGIN_URL', None),
# 'LOGOUT_URL': getattr(settings, 'LOGOUT_URL', None),
'DOC_EXPANSION': None,
'APIS_SORTER': None,
'OPERATIONS_SORTER': None,
'JSON_EDITOR': False,
'SHOW_REQUEST_HEADERS': False,
'SUPPORTED_SUBMIT_METHODS': [
'get',
'post',
'put',
'delete',
'patch'
],
'VALIDATOR_URL': '',
}
views.py
from rest_framework.schemas import AutoSchema
class RandomClass(APIView):
authentication_classes = (TokenAuthentication, )
permission_classes = (IsAuthenticated, )
schema = AutoSchema(
manual_fields=[
coreapi.Field(
"page_id",
required=True,
location="query",
type="string",
description="Facebook Page ID"
)
]
)
Это позволяет мне в некоторой степени использовать drf-схему для рендеринга каждого вида по отдельности в документах swagger.Предостережение заключается в том, что, поскольку в этом представлении применяется Аутентификация, только после того, как я авторизую пользователя (авторизация по токену, согласно определениям безопасности параметров чванства), я могу просматривать все свои представления IsAuthenticated.Кроме того, если одна функция представления имеет несколько методов (get и post), генерация схемы для обоих одинакова (если я делаю это таким образом. У меня здесь две проблемы.
- Я хочу знать, чтобыло бы правильным способом продвинуться вперед для APIView с использованием TokenAuthentication (я не получил никаких полезных документов и должен был почистить форумы для рабочего решения).
- Процедура авторизации для DjangoRestSwagger 2.2.0 не работает сэти настройки. Поэтому я не могу использовать кодирование схемы, которое очень помогло бы при публикации необработанных данных JSON.
Если кто-то может помочь с этими проблемами или если кто-то посчитает мои настройки и настройки полезными, пожалуйста,оставьте комментарий, чтобы мы могли обсудить наши варианты:)