91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Django數據結果集序列化并展示

發布時間:2020-08-01 10:43:57 來源:億速云 閱讀:230 作者:小豬 欄目:開發技術

小編這次要給大家分享的是如何實現Django數據結果集序列化并展示,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

示例為一對多的表關系,學生為多,老師為一,設置外鍵字段可以為空,也就是說關聯的老師被刪除該學生依然存在,只是相應字段留空

class Teacher(models.Model):
  name = models.CharField(max_length=10,verbose_name='老師名稱')
  password = models.CharField(max_length=10,verbose_name='密碼')
  class Meta:
    verbose_name_plural = '教師表'
  def __str__(self):
    return self.name
class Student(models.Model):
  teacher = models.ForeignKey(to=Teacher,on_delete=models.SET_NULL,null=True,verbose_name='教師')
  name = models.CharField(max_length=10,verbose_name='學生名字')
  age = models.IntegerField(verbose_name='年齡')
  class Meta:
    verbose_name_plural = '學生表'
  def __str__(self):
    return self.name

     teacher = models.Teacher.objects.get(pk=id) # id=id的某位老師
students = teacher.student_set.all() # 以一表反向查詢多表,查詢這位老師的學生

此時,all()返回的是一個結果集。<QuerySet [<Student: 學生1>, <Student: 學生22>, <Student: 學生3>, <Student: 學生44>]>

這里要將這個結果傳給前端ajax需要先將其轉成json格式,但是這樣的一個結果集又不能使用json.dumps的。

我的方法是先給它轉成列表嵌套字典再進行序列化操作

def index(request):
  if request.method == "GET":
    teacher_name = request.session.get('name')
    teacher = models.Teacher.objects.get(name=teacher_name)
    students = teacher.student_set.all()
    print(students)
    list = []
    for i in students:
      json_dict = {}
      json_dict['name'] = i.name
      json_dict['age'] = i.age
      list.append(json_dict)
    return JsonResponse(list,safe=False)  # 這里safe默認為True,只接受參數為dict字典類型,非dict類型---“報錯:In order to allow non-dict objects to be serialized set the safe parameter to False.” safe=False之后list列表, tuple元祖, set集合就都可以

前端ajax接收參數,并且循環變量當前傳過去的列表

$('#submit2').click(function(){
      $.ajax({
        url:'/app1/index/',
        type:'GET',
        success:function(res){
          console.log(res)
          var str = ''
          for(var i = 0; i < res.length; i++){     # js中的for循環
            str += '<li>' + res[i]['name'] + '</li>'
            }
            $('#students').html(str)          
        }
      })      

    })

渲染效果如下圖所示

如何實現Django數據結果集序列化并展示

 <button id="submit2">點擊查看我的學生</button>
<p id="students"></p>

就是這個小小的按鈕,竟然在背后做了這么多事情,使得我們要的信息成功的展示在了下面的標簽里[/code]

看完這篇關于如何實現Django數據結果集序列化并展示的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永修县| 肥东县| 民乐县| 静海县| 高要市| 确山县| 绥中县| 大埔县| 闸北区| 迭部县| 夏津县| 东明县| 英超| 巢湖市| 壶关县| 罗山县| 伊宁县| 永和县| 大石桥市| 二连浩特市| 且末县| 和静县| 罗定市| 舞钢市| 深泽县| 会宁县| 蒲城县| 望江县| 沁源县| 宁乡县| 开鲁县| 夏邑县| 大姚县| 依兰县| 商水县| 万山特区| 海林市| 南昌县| 阿坝县| 呼图壁县| 上饶市|