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

Django: using context variable in a script

本文关键字:上下文 变量 脚本 Django      更新时间:2023-09-26

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

正如在这篇文章中提到的,你应该能够通过以下方式从我们的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。(不,我不能升级到最新版本)。

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

尽管正如Sebastian指出的那样,您可能需要{{ items|safe }}

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