#python #django #django-rest-framework #django-swagger
#python #django #django-rest-framework #django-swagger
Вопрос:
У меня возникли проблемы с Django REST Swagger. Я создал простой набор представлений для пользователей, использующих DRF (просто для демонстрации моей проблемы), где AppUser — это моя пользовательская модель пользователя, и в моей документации не отображается метод POST, но я могу вызвать его с помощью Postman и создать новый ресурс.
Я использую:
- Django 2.1
- Django-отдых-развязность 2.2.0
- Djangorestframework 3.9.1
Вот мой код:
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = AppUser.objects.all()
serializer_class = UserSerializer
serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = AppUser
fields = '__all__'
urls.py
from django.conf.urls import url, include
from rest_framework.routers import SimpleRouter
from rest_framework_swagger.views import get_swagger_view
import app.views as app
# creating router
router = SimpleRouter()
router.register(r'users', app.UserViewSet)
schema_view = get_swagger_view(title='My app API')
# register urls
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^docs', schema_view)
]
Здесь вы можете увидеть, как выглядит документация моего приложения:
Я хотел бы получить что-то вроде этого:
Я перепробовал несколько руководств по созданию документации Swagger, и я пробовал это на пользовательской модели, но я по-прежнему получаю только запрос GET. Что я делаю не так?
Спасибо за вашу помощь.
Ответ №1:
Я понял это. Я не вошел в систему должным образом, поэтому я не прошел проверку подлинности на соответствие разрешениям, указанным в настройке DEFAULT_PERMISSION_CLASSES для DRF в settings.py .
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES':
('rest_framework.permissions.IsAuthenticatedOrReadOnly',),
}
HTTP-методы POST, PUT, PATCH и т. Д. Проверяются с помощью has_permission() по списку определенных там разрешений.
После входа в систему он работает хорошо.
РЕДАКТИРОВАТЬ: проблема с входом в систему заключалась в том, что Django-rest-swagger 2.2.0 некорректно работает с аутентификацией JWT, поэтому я понизил рейтинг до 2.1.2.