Python/Django模板中的序列化模型
我试图序列化一些在django模板中表示用户设置的模型。以下是我正在做的:Python/Django模板中的序列化模型,python,django,django-templates,Python,Django,Django Templates,我试图序列化一些在django模板中表示用户设置的模型。以下是我正在做的: <script type="text/javascript"> var mutes = {{ user.appuser.mutes.all|safe }}; </script> var mutes={{user.appuser.mutes.all | safe}; 我得到的不是json,而是以下内容: <script type="text/javascript"> v
<script type="text/javascript">
var mutes = {{ user.appuser.mutes.all|safe }};
</script>
var mutes={{user.appuser.mutes.all | safe};
我得到的不是json,而是以下内容:
<script type="text/javascript">
var mutes = [<Mute: Mute object>, <Mute: Mute object>];
</script>
var mutes=[,];
我是新手,显然做错了什么。感谢您的帮助 您可以使用Django的内置功能,也可以仅使用中的序列化功能。我发现Django Rest框架是一个更好的选择,即使对于简单的任务也是如此,因为它非常灵活,并且在您自己的代码中需要更少的开销 无论哪种方式,您都需要使用
JSON.parse
,如下所示:
var mutes = JSON.parse('{{ serialized_value }}');
一般来说,直接序列化django模型以便在前端使用不是一个好主意,主要是因为安全性。如果您的模型中存在不允许用户读取的数据,该怎么办 因此,您通常会手动在javascript中创建对象:
var objects = [];
{% for model in models %}
objects[] = {
name: {{ model.name }},
date: {{ model.date }},
// etc.
};
{% endfor %}
这样,只有在模板中显式定义的数据才能进入javascript。如果您的模型将来发生更改并添加了敏感数据,它将不会出现在javascript对象中。
|safe
与序列化无关。在我的例子中,我必须使用JSON.parse({{serialized_values | safe}}')
在本例中如何将“models”变量传递到外部js文件中?Django将阻止这样做,因为它不可JSON序列化