报错提示
Traceback (most recent call last):
venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request)
venv\lib\site-packages\django\utils\deprecation.py", line 136, in __call__ response = self.process_response(request, response)
venv\lib\site-packages\django\middleware\clickjacking.py", line 27, in process_response
if response.get("X-Frame-Options") is not None: AttributeError: 'Response' object has no attribute 'get'
原因:
视图函数 def func(request): 应该返回的是一个Django HttpResponse
对象。但你直接把一个requests
库的 Response
对象(requests请求获得response)直接return 给前端浏览器了。requests
库的 Response
对象与Django的 HttpResponse
对象不同,它没有 get
方法来访问 HTTP 头信息
要解决这个问题,你可以将 requests
的响应内容转换为Django的 HttpResponse
对象。
import requests
from django.http import JsonResponse
def your_view(request):
# 通过 requests 发送请求
response = requests.get('https://example.com/')
# 检查请求是否成功
if response.status_code == 200:
# 返回 JsonResponse 对象
return JsonResponse(response.json())
else:
# 返回错误响应
return JsonResponse({'error': 'Failed to fetch data'}, status=500)