3

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

我在用着:

  • 姜戈 2.1
  • Django-rest-swagger 2.2.0
  • Djangorest框架 3.9.1

这是我的代码:

视图.py

class UserViewSet(viewsets.ModelViewSet):

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

序列化程序.py

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

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

谢谢您的帮助。

4

1 回答 1

3

我已经想通了。我没有正确登录,所以我没有针对 settings.py 中 DRF 的 DEFAULT_PERMISSION_CLASSES 设置中列出的权限进行身份验证。

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。

于 2019-04-13T20:44:26.240 回答