我有一个继承自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。 (不,我无法将其升级到最新版本。)
答案 0 :(得分:3)
您不能在模板变量,过滤器字符和过滤器本身之间使用空格。所以它应该是{{ items|escapejs }}
。
虽然塞巴斯蒂安指出,你可能想要{{ items|safe }}
。
答案 1 :(得分:1)
<script>
var items = "{{items}}";
</script>