从Django模板返回JSON

时间:2016-01-14 06:31:44

标签: python json django django-templates

我已经查看了这个问题的一些现有答案,但无法解决我的问题。

我的一个观点中有一个python字典。我使用json.dumps()将其转换为json,然后将其发送到模板。

如果所有JSON值都没有空格,则模板会正确返回JSON。但是如果一个键的值由一个空格分隔,那么模板返回的JSON字符串将在空格后被截断。

Android SDK读取返回的JSON字符串,如果任何键具有空格分隔值,则我知道返回的JSON字符串被截断。

views.py:

@api_view(['POST'])
@permission_classes((AllowAny, ))
def temp(request):
    if request.method == 'POST':
    response_dict = {}
        response_dict['KEY1'] = 'hello'
        response_dict['KEY2'] = 'hello world'
        param_dict = json.dumps(response_dict, separators=(',', ':'))
        return render(request, 'validate.html', {'params_dict': param_dict})

validate.html

<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-I">
<title>HELLO</title>
<script type="text/javascript">
    function response(){
        return document.getElementById('response').value;
    }       
</script>
</head>
Redirect back to the app<br>
<form name="frm" method="post">
    <input type="hidden" id="response" name="responseField" value={{ params_dict }}>
</form>

如上图所示,如果KEY2的值为“hello world”,没有空格,即“helloworld”,则模板会正确返回JSON字符串ss,否则在“hello”之后将其截断

1 个答案:

答案 0 :(得分:0)

您应该将值包装在模板中的引号中:

<input type="hidden" id="response" name="responseField" value="{{ params_dict }}">