在 django 模板中显示 json 数据

Posted

技术标签:

【中文标题】在 django 模板中显示 json 数据【英文标题】:display json data in the django template 【发布时间】:2014-11-12 12:40:49 【问题描述】:

我正在尝试使用ajax 保存表单值。我已经这样做了,现在表单数据正在保存到数据库中。我现在想要的是仅在该 django 模板中显示保存的数据而不刷新它。但是在表单提交时显示 json 数据字符串(仅显示结果)

models.py

from django.db import models

class TestModel(models.Model):
    title = models.TextField(max_length=255)

views.py

import json
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils import simplejson
from vijayapp.forms import *
from django.http import *
from vijayapp.models import *
def main(request):
   return render_to_response('index.html',
        'form':TestForm(), RequestContext(request))

def index(request):
    if request.method == "POST":
            form = TestForm(request.POST)
            #message = 'something wrong'
            if form.is_valid():
                message=request.POST['title'] #model field name
                form.save()
                dict = 
                dict['value']=message
                #return HttpResponse(json.dumps('message': message))
                return HttpResponse(json.dumps(dict), content_type="application/json") 

    else:

        form = TestForm()


    return render_to_response('index.html',
        'form':TestForm(), RequestContext(request))

index.html

    <body>
    <h1>Leave a Suggestion Here</h1>
        <div class="message"></div>
        <div class="hello">
            <form action="/forms/" method="POST" id="MY_FORM">% csrf_token %
                 form.as_p  
                <input type="submit" value="Submit Feedback" id="button"/>
            </form>
            <p></p><p></p>
            <div id="result">
            </div>
        </div>

</body>

    <script type="text/javascript">
$(document).ready(function() 
$("#button").click(function() 
e.preventDefault();
var input_string1 = $(".textclass").val();
alert(input_string1);
$.ajax(
url :"forms",
type : "POST",
dataType: "json",
data: $(this).serialize(),
success : function(json) 
$('#result').html(json.value);
alert(json['value']);
,
error : function(xhr,errmsg,err) 
alert("wrong entry");

);
return false;
);
);
</script>


forms.py
from django.forms import ModelForm
from vijayapp.models import TestModel
from django import forms 

class TestForm(ModelForm):
    class Meta:
        model = TestModel
        widgets=
                      "title":forms.TextInput(attrs='placeholder':'Name','name':'Name','id':'common_id_for_imputfields','class':'textclass'),


                    

【问题讨论】:

【参考方案1】:

是的,您将 json 数据作为字符串获取,因此您可以使用 $.parseJson 解析 jquery 代码中的 json。现在您将获得数据的数据结构(字典、元组、列表)。现在您可以显示数据结构(字典、元组、列表)中的每个数据。

【讨论】:

以上是关于在 django 模板中显示 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Json 数据显示到 Django 模板?

django - 使用间隔的 AJAX 调用刷新模板中的 JSON 数据

如何解析和渲染 json 以在 Django 模板中使用

关于Django模板的JSON

将 JSON 数组从 Django 视图返回到模板

Django:如何使用查询集并在模板中显示结果?