Django 序列化 前端通过ajax来获取数据库中的数据
前端通过ajax来获取数据库中的数据
1、实现方式一(不用,只参考)
在后台通过获取数据并自己格式化成html数据全部发给前端
# views.py def get_data(request): user_list = models.UserInfo.objects.all() return render(request, 'get_data.html', {'user_list':user_list})
# 获取数据的前端页面 index.html
<h1>用户列表</h1>
<table id='tb'></table>
<script src='/statics/jquery.js'></script>
<script>
$(function{
initData()
});
function initData(){
$.ajax({
url: '/get_data.html'
type: 'GET',
success: function(arg){
$('#tb').append(arg);
}
})
}
<script>
# get_data.html {% for row in user_list %} <tr> <td>{{ row.id }}</td>
<td>{{ row.username }}</td>
</tr>
{% endfor %}
2、实现方法二
在后台通过只获取数据发给前端,由前端生成相应的html来存放数据
# views.py from django.core imports serializers 可将对象序列化为符串
def get_data(request):
ret = {'status':True, 'data':None}
try: # 1
user_list = models.UserInfo.objects.all() # 这时是个QuerySet,里边是一个一个对象,无法json.dumps()
ret['data'] = serializers.serialize('json',user_list) # 将QuerySet对象序列化为json格式的字符串
# 2
# user_list = models.UserInfo.objects.all().values('id','username') #这时是个QuerySet,里边是一个一个字典
# ret['data']= list(userlist) # 用list将最外层的QuerySet转为列表,就可json.dumps()
# 3
# user_list = models.UserInfo.objects.all().values_list('id','username') #这时是个QuerySet,里边是一个一个元组
# ret['data']= list(userlist) # 用list将最外层的QuerySet转为列表,就可json.dumps()
except Exception as e:
ret['data'] = False
return HttpResponse(json.dumps(ret))
# 获取数据的前端页面 index.html <h1>用户列表</h1> <table id='tb'></table> <script src='/statics/jquery.js'></script> <script> $(function{ initData() }); function initData(){ $.ajax({ url: '/get_data.html' type: 'GET',
dataType:'JSON' success: function(arg){ if(arg.status){
// 此时arg.data是个字符串
v = JSON.parse(arg.data) //再将json字符串转为json对象
//通过for循环取里里面的数据生成html...
} } }) } <script>