javascript - 我的 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这个值也不会打印在控制台上。
解决方案
您可以将数据作为 JSON 传递并使用 JSON.parse 在 js 中解析此对象
推荐阅读
- javascript - js: str.replace() 与 Promise
- android - 使用 mvvm 模式使用静态数组将数据绑定到 Spinner
- javascript - 如何在通过单击电子邮件中提供的超链接加载网站时向用户显示消息
- mongodb - 将 MongoDB 集合按 5 个字段分组,其中集合有超过 500 万条记录
- python-3.x - Keras 神经网络多输入/输出
- php - 创建一个表来存储 SQL 数据库中的数据
- python - TypeError:“ImageDataGenerator”类型的对象没有 len()
- java - Spring Boot 可以将本地配置文件与同名的捆绑配置文件合并吗?
- oracle-apex - 我们可以在 Oracle Apex 中将标签设为粗体吗
- python - 如何在python中使用append in for