在Django中,QuerySet可以用來實(shí)現(xiàn)對數(shù)據(jù)庫進(jìn)行快速操作。而在QuerySet的基礎(chǔ)上,我們可以利用json來輸出數(shù)據(jù)庫中的數(shù)據(jù)。
下面我們以一個例子來說明具體的操作方法:
# 創(chuàng)建一個模型類 class Student(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() sex = models.CharField(max_length=2) grade = models.CharField(max_length=20) # 向數(shù)據(jù)庫插入數(shù)據(jù) Student(name='張三', age=18, sex='男', grade='高一').save() Student(name='李四', age=17, sex='女', grade='高二').save() Student(name='王五', age=19, sex='男', grade='高三').save() # 在視圖函數(shù)中查詢數(shù)據(jù)庫 students = Student.objects.values() json_data = json.dumps(list(students))
在上面的代碼中,我們首先創(chuàng)建了一個學(xué)生模型類,然后向數(shù)據(jù)庫中插入了三條數(shù)據(jù)。接著在視圖函數(shù)中,我們使用values()方法獲取了所有學(xué)生的信息,并將其轉(zhuǎn)換成了json格式。
我們可以通過print(json_data)的方式打印出json格式的數(shù)據(jù),結(jié)果如下:
[{"id": 1, "name": "張三", "age": 18, "sex": "男", "grade": "高一"}, {"id": 2, "name": "李四", "age": 17, "sex": "女", "grade": "高二"},{"id": 3, "name": "王五", "age": 19, "sex": "男", "grade": "高三"}]
在前端頁面中,我們可以使用ajax來獲取這些json數(shù)據(jù),然后將其渲染到頁面上。例如:
$.ajax({ url: '/get_data', type: 'post', data: {}, success: function(response) { var data = JSON.parse(response); for (var i = 0; i< data.length; i++) { var student = data[i]; var html = '<tr><td>' + student.name + '</td><td>' + student.age + '</td><td>' + student.sex + '</td><td>' + student.grade + '</td></tr>'; $('table').append(html); } }, error: function(xhr, status, error) { alert('Error: ' + error); } });
在上面的代碼中,我們使用了ajax來請求/get_data接口,然后將返回的json數(shù)據(jù)解析成了對象,最后用for循環(huán)將數(shù)據(jù)遍歷出來,并利用jquery將其附加到表格中。
以上就是關(guān)于Django QuerySet的json輸出的簡單例子,我相信通過這個例子,讀者已經(jīng)掌握了QuerySet和json的基本用法。