Javascript如何自动接收django发送的数据并赋值

django后端利用HttpResponse发送dict给前端。Javascript如何在前端接收dict的内容并赋值做处理。以下限制条件:
1)HttpResponse,不用json;
2)前端不用ajax
谢谢!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Django HttpResponse与JsonResponse
  • 除此之外, 这篇博客: Django框架基础篇--响应HttpResponse相关知识点中的 2. JsonResponse:响应JSON 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 目的:前端需要JSON数据,那后端需要构造 JSON数据 响应给 前端
    • Django提供了 JsonResponse 构造并响应JOSN数据
    • JsonResponse 作用:

    1. 将响应数据转换为JSON字符串

    2. 设置响应头Content-Type为 application/json

    • 案例: 通过
    http://127.0.0.1:8000/json_resp/ 向后端要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后端:

    1. 在Django后端视图中,使用HttpResponse方法将字典发送给前端。例如:
    from django.http import HttpResponse
    
    def my_view(request):
        data = {'key1': 'value1', 'key2': 'value2'}
        return HttpResponse(str(data))
    

    这里的data是一个字典,通过str()函数将其转换为字符串进行发送。

    前端JavaScript:

    1. 在前端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发送的数据并进行处理的过程。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^