zoukankan      html  css  js  c++  java
  • rest framework错误笔记——身份验证和权限

    按照官网教程(http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/)走到最后一步验证时,命令窗口执行http POST http://127.0.0.1:8000/snippets/ code="print 123"后

    {
        "detail": "Authentication credentials were not provided."
    }

    这条结果是因为#视图类中的写法(1):

    authentication_classes = (
    BasicAuthentication,
    )
    permission_classes = (
    IsAuthenticatedOrReadOnly,
    )

    若根据教程的写法(2)

    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                          IsOwnerOrReadOnly,)

    则返回如下结果:

    {
        "detail": "You do not have permission to perform this action."
    }

    根据版本不同视图类中的代码不同则提示不同,虽然无论哪种结果都代表没有权限,但还是建议用写法(1),因为写法(2)会导致执行http -a admin:password123 POST http://127.0.0.1:8000/snippets/ code="print 789"后仍然验证不通过返回上面的结果。

    当这些设置完成后,执行http -a admin:password123 POST http://127.0.0.1:8000/snippets/ code="print 789"报错:

    Exception Type: IntegrityError at /snippets/
    Exception Value: NOT NULL constraint failed: snippets_snippet.owner_id

    只需将视图类中post方法里面的

    serializer.save()

    改为:

    serializer.save(owner=self.request.user)
  • 相关阅读:
    异常处理
    PAT——1048. 数字加密
    PAT——1047. 编程团体赛
    PAT——1046. 划拳
    PAT——1045. 快速排序(25)
    PAT——1044. 火星数字
    PAT——1043. 输出PATest
    PAT——1042. 字符统计
    PAT——1041. 考试座位号
    PAT——1040. 有几个PAT
  • 原文地址:https://www.cnblogs.com/youleng/p/9183849.html
Copyright © 2011-2022 走看看