我的JavaScript变量无法接受使用Django render()方法发送的对象

我的JavaScript变量无法接受使用Django render()方法发送的对象,javascript,html,json,django,python-3.x,Javascript,Html,Json,Django,Python 3.x,我试图将JSON格式的Django对象提取到我的javascript变量中。我使用了django.core导入序列化程序中的预定义方法,将其转换为JSON格式。当我试图将该对象直接提取到Jinja标记中时,它会打印所有数据,但当我试图在Javascript变量中获取该数据时,它将不起作用 view.py from django.http import HttpResponse from django.shortcuts import render from .models import Empl

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

view.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})
home.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>

文件
{%extends'母版页.html%}
{%block content%}
**{{data | safe}}**(下面是输出)
{%csrf_令牌%}
{%endblock%}

var data=eval('('+'{{data}}'+'); var p=10; document.getElementById(“demo”).innerHTML=p console.log(p) 控制台日志(数据); 警报(数据);
输出:[{“模型”:“journal.employee”,“pk”:1,“字段”:{“ename”:“Piyush Jiwnae”,“eemail”:”jiwanepiyush@gmail.com“}}]


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

您可以将数据作为JSON传递,并使用JSON解析js中的此对象。如果我看得正确,则您的脚本在该行引发错误:

var data=eval('('+'{{data}}'+')');
比如说

SyntaxError: expected property name, got '&'
在原始格式中,您的数据呈现为以下内容:

[{&quot;model&quot;: &quot;stack.employee&quot;, &quot;pk&quot;: 
如果将数据变量标记为安全的,则应获得适当的json对象:

var data=eval('('+'{{data|safe}}'+')');
编辑:代码中的另一个问题:


你的标签放错地方了。您应该将
{%extends'masterpage.html%}
放在模板的顶部,而不是
标记中。然后你应该去掉模板中的
标记,因为这可能已经在你的
母版中了。html

是否警报(数据)正在工作?@sandeep-不,即使它也不工作没有人仍然不工作,忘记JSON对象吧,我的问题是,为什么控制台上不显示var p=10值??通过使用data=serializers.serialize(“JSON”,Employee.objects.all()),我可以成功地发送JSON数据,但无法在JavaScript variableNo上获取JSON数据,即使我像var data=eval(“(“+”{data}}}”+”)一样传递;因此,但我的控制台上仍然没有任何错误。我也尝试过你的建议,但仍然不起作用。然后我相信还有另一个问题。请参阅我的帖子编辑。如果仍然不起作用,请同时发布您的
masterpage.html