【问题标题】:Getting error while passing data of DJango list to javascript list将 DJango 列表的数据传递到 javascript 列表时出错
【发布时间】:2012-07-07 20:28:21
【问题描述】:

我有一个 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-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

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

var user = [user_a, user_b]

我不明白为什么会这样:(

【问题讨论】:

  • 你的 Javascript 应该如何知道 'user_a' 是什么?
  • @DanielRoseman 我没找到你。我刚刚使用 Chrome 中的 Fire bug 或 Inspected element 工具检查了这些错误
  • @AmitPal 对,所以var user = [user_a, user_b],但是user_auser_b 是什么?这些内部名称未定义,因此出现错误。
  • @kojiro 哦!我明白了,但是我应该如何拒绝,因为它是从 python 中的数据库中获取的动态列表。我是 Javascript 的新手。我该怎么办?是否可以将这些作为字符串传递?

标签: javascript python django django-templates python-2.7


【解决方案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 %}];`

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

【讨论】:

    【解决方案2】:

    您可以在模板中使用

    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 语句似乎都有些过度工作。

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2021-01-09
      • 2021-07-18
      • 2021-05-31
      • 2021-02-26
      • 2012-08-03
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多