中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何實現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

同仁县| 防城港市| 万安县| 麻阳| 河北省| 宁蒗| 老河口市| 天台县| 探索| 平昌县| 烟台市| 西藏| 沂源县| 房山区| 广元市| 河津市| 旬邑县| 惠州市| 德令哈市| 鄂托克前旗| 祁门县| 玉树县| 健康| 措勤县| 彩票| 澎湖县| 馆陶县| 武川县| 双鸭山市| 宁波市| 吕梁市| 安庆市| 义乌市| 治多县| 任丘市| 锡林浩特市| 天津市| 临泉县| 千阳县| 万载县| 永修县|