django后端利用HttpResponse发送dict给前端。Javascript如何在前端接收dict的内容并赋值做处理。以下限制条件:
1)HttpResponse,不用json;
2)前端不用ajax
谢谢!
Javascript如何自动接收django发送的数据并赋值
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注不知道你这个问题是否已经解决, 如果还没有解决的话:- 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Django HttpResponse与JsonResponse
- 除此之外, 这篇博客: Django框架基础篇--响应HttpResponse相关知识点中的 2. JsonResponse:响应JSON 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
http://127.0.0.1:8000/json_resp/ 向后端要JSON类型数据,并响应给前端- 目的:前端需要JSON数据,那后端需要构造 JSON数据 响应给 前端
- Django提供了 JsonResponse 构造并响应JOSN数据
- JsonResponse 作用:
1. 将响应数据转换为JSON字符串
2. 设置响应头Content-Type为 application/json
- 案例: 通过
1. 在views.py中编写以下代码
class Response2View(View): """测试JSONResponse http://127.0.0.1:8000/json_resp/ """ def get(self,request): # 响应数据 dict_data = { "name":"Mr.lin", "age":18 } # 使用JSONResponse构造并响应JSON数据 return http.JsonResponse(dict_data)2. 注册子路由
from django.urls import path,re_path from . import views # 注册子路由 urlpatterns = [ # 测试JSONResponse http://127.0.0.1:8000/json_resp/ path("json_resp/",views.Response2View.as_view()), ]3. 运行代码,返回结果

- 以下回答由chatgpt基于相关博客总结生成:
根据提供的参考资料和问题要求,要求使用JavaScript在前端自动接收Django发送的数据并进行处理,且不能使用json进行传输,也不能使用Ajax。
基于以上要求,可以使用以下方法解决问题:
Django后端:
- 在Django后端视图中,使用HttpResponse方法将字典发送给前端。例如:
from django.http import HttpResponse def my_view(request): data = {'key1': 'value1', 'key2': 'value2'} return HttpResponse(str(data))这里的data是一个字典,通过str()函数将其转换为字符串进行发送。
前端JavaScript:
- 在前端HTML页面的JavaScript中,使用XMLHttpRequest对象来发送GET请求,获取Django发送的数据。例如:
var xhr = new XMLHttpRequest(); xhr.open('GET', '/my_view/', true); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { var dataString = xhr.responseText; var data = JSON.parse(dataString); // 将字符串转换为字典对象 // 处理接收到的数据 console.log(data); } } }; xhr.send();上面的代码中,我们发送一个GET请求给
/my_view/,并监听readyState的变化。当readyState变为XMLHttpRequest.DONE时,表示请求完成。然后判断status是否为200,表示请求成功。获取到中后,使用JSON.parse()方法将字符串转换为字典,并可以进一步处理。注意:这里使用JSON.parse()方法,是因为Django发送给前端的是一个字符串格式的字典数据。
这样就完成了通过JavaScript在前端自动接收Django发送的数据并进行处理的过程。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 2无用