使用Django模板系统返回JSON响应

时间:2014-10-14 10:16:30

标签: json django

有可能吗? 我试过了:

def jsonview(request):
  context = {}
  context['date'] = datetime.now()
  return render(request, "json.html", context, content_type="application/json")

json.html文件:

{% load i18n %}

'{"date": "{{ date|escapejs }}", "test": "hello"}' 

回复是:

'\n\n{"date": "2014\u002D11\u002D13 11:58:31.635102", "test": "hello"}' 

所以错误是:

SyntaxError: JSON.parse: unexpected character at line 3 column 1 of the JSON data

2 个答案:

答案 0 :(得分:2)

简单的方法是首先将模板中的数据渲染为字符串,并将其作为json响应,如下面的示例代码所示。

from django.template.loader import render_to_string
from django.http import HttpResponse
def jsonview(request):
      context = {}
      context['data'] = render_to_string("json.html", {'date': datetime.now()})
      return HttpResponse(json.dumps(context), content_type="application/json")

答案 1 :(得分:0)

你应该使用Django templatetags。您可以创建自己的custom template tag或使用built-in ones

在这种情况下,您可以在json.html文件中使用templatetag now

{% now "SHORT_DATETIME_FORMAT" %}