2

我有一个 python-Django 列表:

list_a = ['user_a', 'user_b']

现在我使用以下代码将其渲染为模板:

extra_context = {
    'a': list_a
}
return direct_to_template(request, 'mytemplate.html', extra_context)

在我的模板中,我编写了以下 java 脚本代码来将 list_aDjango-list 传递给 Js-list:

var user = [{% for i in user_list %}{{ i }}{% if forloop.last %}{%else%},{%endif%}{% endfor %}];

但是当我打开模板时。它显示以下错误(使用 Inspect 元素检查):

Uncaught ReferenceError : user_a is not defined

我尝试使用 打印user驻留在 javascript 中的变量Inspect Element。它打印正确的值,即

var user = [user_a, user_b]

我无法理解为什么会这样:(

4

2 回答 2

1

我认为我发现了错误:

Update `var user = [{% for i in user_list %}{{ i }}{% if forloop.last %}{%else%},{%endif%}{% endfor %}];

var user = [{% for i in user_list %}"{{ i }}"{% if forloop.last %}{%else%},{%endif%}{% endfor %}];`

正在给我正确的解决方案。

于 2012-07-07T23:43:56.930 回答
0

在您的模板中,您可以使用

var user = {{user_list|safe}};

使用此模板代码,python 列表定义为

user_list = ['te"s\'t1', 'test2'];

查看javascript源时给出以下结果

var user = ['te"s\'t1', 'test2'];

而你原来的解决方案会给

var user = ["te"s't1","test2"];

您使用哪一个实际上取决于您打算对用户名做什么。无论您是否在模板中使用“安全”,您的模板中的 for 和 if 语句似乎有点过度工作。

于 2012-07-08T00:03:29.893 回答