Django REST Swagger не показывает методы POST

#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) 
]
 

Здесь вы можете увидеть, как выглядит документация моего приложения:

фактическая документация API

Я хотел бы получить что-то вроде этого:

идеальная документация

Я перепробовал несколько руководств по созданию документации 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.