【问题标题】:Passing array from Django view to HTML/JS将数组从 Django 视图传递到 HTML/JS
【发布时间】:2020-06-15 16:33:16
【问题描述】:

我正在将一个数组从 django 视图发送到一个 html(其中有一个 JS 脚本),但该数组似乎是一个字符串。事实上,如果我尝试使用 console.log(array[0]) 或 console.log(array[1]) 它会在第一种情况下返回 [ 而在第二种情况下 '

代码是:

Django 视图

def results(request):
   h = request.POST['h']   
   name = request.POST['name']

   array = [h, name]
return render(request, 'app/index.html', {'h':h, 'array':array})

index.html

<script>
   var h = "{{ h }}"   //this is 3 
   var array = "{{ array|safe }}"  //this is ['3', 'John']
   console.log(h)
   console.log(array[0])
   console.log(array[1])

控制台是:

3 

[

'

我希望是:

3

3

John

您知道如何访问数组的 n 值吗?谢谢

【问题讨论】:

  • 您可以尝试删除引号。那么,您可以使用 {{ array|safe }} 代替“{{ array|safe }}”吗?
  • 不!从 django 视图调用变量是强制性的,没有引号它甚至不再编译了
  • 我觉得不行,你能试试吗?
  • 我试过了,代码编辑器给了我一个错误,但最后我运行了代码,它工作了!非常感谢

标签: javascript html arrays django


【解决方案1】:

试用包django-jsonify

pip install django-jsonify

然后将jsonify添加到django INSTALLED_APPS

在您的模板中

{% load jsonify %}

var array = {{ array|jsonify }}

希望对你有帮助,如果有什么问题请告诉我。

【讨论】:

  • 如果我使用这种方法,我得到两个错误: Uncaught SyntaxError: Unexpected string (at the line of var array) Uncaught ReferenceError: h is not defined (at the line I will use h)
  • 尝试删除双引号 var array = {{ array|jsonify }}
【解决方案2】:

您可以使用{{ array|safe }} 代替"{{ array|safe }}" 而无需任何扩展。

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 2021-12-24
    • 2020-08-09
    • 2013-06-24
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2016-03-25
    • 2020-03-19
    相关资源
    最近更新 更多