【问题标题】:AttributeError after POST request in DjangoDjango中POST请求后的AttributeError
【发布时间】:2021-05-01 23:34:38
【问题描述】:

我正在向本地运行的 Django 服务器发出发布请求。我将请求发送到http://127.0.0.1/login/。这是视图

@csrf_exempt
def login(request):
    json_data = json.loads(request.body.decode('utf-8'))
    print(json_data)
    return request.body

我现在只有@csrf_exempt,这样我就不必查看获取 csrf 令牌。当我发送 POST 请求时,它可以工作并打印出我随请求发送的 json,但它也会打印出此错误。

Internal Server Error: /login/
Traceback (most recent call last):
  File "C:\Users\Moham\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Moham\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\deprecation.py", line 119, in __call__
    response = self.process_response(request, response)
  File "C:\Users\Moham\AppData\Local\Programs\Python\Python37\lib\site-packages\django\middleware\clickjacking.py", line 26, in process_response
    if response.get('X-Frame-Options') is not None:
AttributeError: 'bytes' object has no attribute 'get'

这让我感到困惑的原因是因为我没有引用任何名为“bytes”的对象或任何名为“get”的属性。有人知道这里发生了什么吗?

【问题讨论】:

    标签: python python-3.x django


    【解决方案1】:

    查看函数应该返回HttpResponse 对象。试试这个:

    from django.http import JsonResponse
    
    @csrf_exempt
    def login(request):
        json_data = json.loads(request.body.decode('utf-8'))
        print(json_data)
        return JsonResponse(json_data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-18
      • 2013-02-08
      • 1970-01-01
      • 2013-03-09
      • 2017-11-15
      • 2011-07-04
      • 2020-11-04
      • 1970-01-01
      相关资源
      最近更新 更多