Django:在脚本中使用上下文变量

时间:2016-09-13 09:49:47

标签: javascript python django

我有一个继承自TemplateView的类视图,并将上下文变量设置为序列化的项目列表:

class MyView(TemplateView):
  def get_context_data(self, **kwargs):
    context = super(MyView, self).get_context_data(**kwargs)
    context['items'] = serializers.serialize("json", items) # assume items is an existing list
    return context

正如this post中所述,您应该能够以下列方式从我们的Django模板中访问Django变量:

<script>var items = {{ items }};</script>

但是我收到了一个JavaScript错误,我认为这是因为自动转义引起的:

Uncaught SyntaxError: Unexpected token &

我也尝试过使用过滤器:

<script>var items = {{ items | escapejs }};</script>

只发现另一个错误,这次是一个Django(TemplateSyntaxError):

Could not parse the remainder: ' |  escapejs' from 'items | escapejs'

我该如何解决这个问题?

PS:我正在使用Django 1.4。 (不,我无法将其升级到最新版本。)

2 个答案:

答案 0 :(得分:3)

您不能在模板变量,过滤器字符和过滤器本身之间使用空格。所以它应该是{{ items|escapejs }}

虽然塞巴斯蒂安指出,你可能想要{{ items|safe }}

答案 1 :(得分:1)

<script>
  var items = "{{items}}";

</script>