我有一个python-Django列表:
list_a = ['user_a', 'user_b']
现在我使用以下代码将其渲染到模板:
extra_context = {
'a': list_a
}
return direct_to_template(request, 'mytemplate.html', extra_context)
在我的模板中,我编写了以下java脚本代码,将list_a
Django列表传递给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]
我无法理解为什么会这样:(
答案 0 :(得分: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 %}];`
正在给我正确的解决方案。
答案 1 :(得分: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语句似乎都有点过度。