首页 > 解决方案 > 我的 JavaScript 变量无法接受我使用 Django render() 方法发送的对象

问题描述

我试图将 JSON 格式的 Django 对象提取到我的 javascript 变量中。我使用了 Django 中可用的from django.core import serializers预定义方法,将其转换为 JSON 格式。当我试图将该对象直接获取到 Jinja 标记中时,它会打印所有数据,但是当我试图在 Javascript 变量中获取该数据时,它就不起作用了。

视图.py

from django.http import HttpResponse
from django.shortcuts import render
from .models import Employee
from django.core import serializers
import json

def home(request):
    data = serializers.serialize("json", Employee.objects.all())
    return render(request,'home.html',{'data':data})

主页.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    {% extends 'masterpage.html' %}

    {% block content %}
    **{{data | safe}}**(go below for output)
    <form action="checkEmail" method="POST">
        {% csrf_token %}
         <input type="text" name="emailId" placeholder="Enter Email Id">
        <input type="submit">
    </form>
    {% endblock %}
    <p id="demo"></p>

    <script type="text/javascript">
        var data=eval('('+'{{data}}'+')');
        var p=10;
        document.getElementById("demo").innerHTML=p
        console.log(p)
        console.log(data);
        alert(data);
    </script>
</body>
</html>

输出:[{“model”:“journal.employee”,“pk”:1,“fields”:{“ename”:“Piyush Jiwnae”,“eemail”:“jiwanepiyush@gmail.com”}}]

我可以在 HTML 中看到直接使用 jinja 标记的输出,但是当我尝试在 javascript 变量中获取该值时,它不会出现,如代码所示,我试图显示该数据和var p=10; document.getElementById("demo").innerHTML=p这个值也不会打印在控制台上。

标签: javascripthtmljsondjangopython-3.x

解决方案


您可以将数据作为 JSON 传递并使用 JSON.parse 在 js 中解析此对象


推荐阅读