Django REST Swagger没有显示POST方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django REST Swagger没有显示POST方法相关的知识,希望对你有一定的参考价值。

我遇到了Django REST Swagger的问题。我为使用DRF的用户创建了一个简单的视图集(仅用于显示我的问题),其中AppUser是我的自定义用户模型,并且它没有在我的文档中显示POST方法,但我可以使用Postman调用它并创建新资源。

我正在使用:

  • Django 2.1
  • Django-rest-swagger 2.2.0
  • Djangorestframework 3.9.1

这是我的代码:

views.朋友

class UserViewSet(viewsets.ModelViewSet):

    queryset = AppUser.objects.all()
    serializer_class = UserSerializer

serialize认识.朋友

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = AppUser
        fields = '__all__'

URLs.朋友

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请求。我究竟做错了什么?

谢谢您的帮助。

答案

我已经明白了。我还没有正确登录,因此我没有根据settings.py中DRF的DEFAULT_PERMISSION_CLASSES设置中列出的权限进行身份验证。

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES':
        ('rest_framework.permissions.IsAuthenticatedOrReadOnly',),
}

使用has_permission()对那里定义的权限列表检查HTTP方法POST,PUT,PATCH等。

登录后效果很好。

编辑:登录问题是,Django-rest-swagger 2.2.0无法正常使用JWT身份验证,所以我降级到2.1.2。

以上是关于Django REST Swagger没有显示POST方法的主要内容,如果未能解决你的问题,请参考以下文章

从 Django REST Swagger 中排除 URL

django-rest-swagger

Django Rest Swagger生成api文档

django-rest-swagger对API接口注释

django-rest-swagger 是不是不适用于模型序列化器?

django-rest-framework 和 swagger api 文档