gpt4 book ai didi

python - 从 postman : CSRF verification failed 运行 django api

转载 作者:行者123 更新时间:2023-12-04 12:24:51 25 4
gpt4 key购买 nike

我正在尝试使用 postman 运行 api .我的应用程序是在 django 1.11.6 中开发的使用 python 3.5 .

我的应用程序安装在 ubuntu 上服务器。我没有创建 csrf 的登录机制 token 。

这些是我遵循的步骤:

  • 单击左上角的“导入”选项卡。
  • 选择原始文本选项并粘贴我的 cURL命令。
  • 点击导入,我在你的 Postman builder 中有命令
  • 按发送按钮。

  • 我的 curl命令是:
    curl -i -H 'Accept: application/json; indent=4' -X POST  https://127.0.0.1/users/:register/ -d "id=111&firstname=zinonas&yearofbirth=2007&lastname=Antoniou&othernames="

    我得到的错误是 Forbidden (403) - CSRF verification failed. Request aborted .

    当我运行 curl command通过 cygwin ,它工作正常。

    这是我正在使用的 View 函数:
    class ApiUserRegister(APIView):
    permission_classes = ()
    serializer_class = RegisterUserSerializer

    def post(self, request):
    serializer = RegisterUserSerializer(data=request.data)
    # Check format and unique constraint
    serializer.is_valid(raise_exception=True)
    data = serializer.data

    if User.objects.filter(id=data['id']).exists():
    user = User.objects.get(id=data['id'])
    is_new = "false"
    resp_status = status.HTTP_200_OK
    else:
    user = User.objects.create(id=data['id'],
    firstname=data['firstname'],
    yearofbirth=data['yearofbirth'],
    lastname=data['lastname'],
    othernames=data['othernames'])
    user.save()
    is_new = "true"
    resp_status = status.HTTP_201_CREATED
    resp = {"user": serializer.get_serialized(user),
    "isnew": is_new}
    return Response(resp, status=resp_status)

    settings.py我有:
    REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.TokenAuthentication',
    'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    )
    }

    最佳答案

    尝试这个。

    from django.views.decorators.csrf import csrf_exempt
    class ApiUserRegister(APIView):
    permission_classes = ()
    serializer_class = RegisterUserSerializer

    @csrf_exempt
    def post(self, request):
    serializer = RegisterUserSerializer(data=request.data)

    关于python - 从 postman : CSRF verification failed 运行 django api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46926227/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com