oldbee0925 2023-07-24 16:41 采纳率: 91.4%
浏览 11
已结题

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

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-24 19:05
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接: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发送的数据并进行处理的过程。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 7月24日