代码之家  ›  专栏  ›  技术社区  ›  Christian

如何将django中的数组传递给模板并与javascript一起使用

  •  33
  • Christian  · 技术社区  · 15 年前

    我想将数组传递给模板,然后通过javascript使用它。

    在我的 VIEW 我有:

    arry1 = ['Str',500,20]
    return render_to_response('test.html', {'array1': arry1})
    

    在我的模板中:

    var array1 = {{ array1 }};
    

    但当我访问网站时,它会输出:

    var array1 = ['Str',500,20];
    

    我要换什么?

    4 回复  |  直到 6 年前
        1
  •  70
  •   Deniz Dogan    15 年前

    试用使用 {{ array1|safe }} 看看这有什么不同。我还没有测试过这个,所以我希望如果这个不正确的话我不会被太低的投票…

        2
  •  16
  •   DarkCygnus    6 年前

    如前所述,您可以使用 |safe 过滤,使Django不会对数组进行消毒并保持原样。

    另一个选择,而且从长远来看可能更好的选择是使用 simplejson 模块(它包含在Django中)将您的python列表格式化为JSON对象,在JSON对象中您可以吐回javascript。您可以像处理任何数组一样循环JSON对象。

    from django.utils import simplejson
    list = [1,2,3,'String1']
    json_list = simplejson.dumps(list)
    render_to_response(template_name, {'json_list': json_list})
    

    在你的javascript中, {{ json_list }}

        3
  •  6
  •   partlov    12 年前

    在Django:

    from django.utils import simplejson
    json_list = simplejson.dumps(YOUR_LIST)
    

    并在上下文中传递“json_list”

    在JS中:

    var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 
    
        4
  •  0
  •   muak    8 年前

    它可以由Django核心序列化程序完成。您所需要做的就是在JSON中序列化数据,然后将其传递给模板。

    data = serializers.serialize("json", <list>)
    return render(request, 'view.html', {'data':data})
    

    在模板中,将此列表保存到javascript变量中。

    var list = {{data|safe}}