Django REST Swagger не показывает методы POST - PullRequest
1 голос
/ 13 апреля 2019

У меня проблема с Django REST Swagger. Я создал простой набор представлений для пользователей, использующих DRF (просто для демонстрации моей проблемы), где AppUser - это моя пользовательская модель пользователя, и в моей документации он не отображает метод POST, но я могу вызвать его с помощью Postman и создать новый ресурс. .

Я использую:

  • Джанго 2,1
  • Django-rest-swagger 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) 
]

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

actual API documentation

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

ideal documentation

Я пробовал несколько учебных пособий по созданию документации Swagger и пробовал это на модели User, но я все еще получаю только запрос GET. Что я делаю не так?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 13 апреля 2019

Я понял это.Я не вошел в систему должным образом, поэтому я не прошел проверку подлинности на основании разрешений, указанных в параметре 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.

...