在Django上下文中传递JSON数据

时间:2018-01-24 23:23:44

标签: javascript json django

通常,如果我想从Django视图返回JSON数据,我可以像这样使用JsonResponse

from django.http import JsonResponse

def my_view(request):
    return JsonResponse({'my_key': 'my_value'})

该数据作为我可以立即使用的JavaScript对象发送到前端。

我希望将相同的易用性添加到视图的上下文中,如下所示:

class WebsiteView(TemplateView):
    template_name = 'index.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['my_var'] = {'my_key': 'my_value'}
        return context

但是,使用{{ my_var }}呈现模板会给出:

{"my_key": "my_value"}

最终,我想要的是{{ my_var }}返回纯字符串而不是HTML编码版本:

{"my_key": "my_value"}

这样,我可以使用JSON.parse('{{ my_var }}')轻松将其加载到JavaScript对象中。

我知道实现这一目标的一种方法是manually unescaping the HTML entities,但我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

Django template documentation中所述,您应该可以在模板中使用|safe过滤器:

{{ my_var|safe }}

这应该指示Django模板引擎逐字呈现数据。