Django多级评论

一、原理

#多级评论原理简单原理,弄完之后发现基础白学了
msg_list = [
    {‘id‘:1,‘content‘:‘xxx‘,‘parent_id‘:None},
    {‘id‘:2,‘content‘:‘xxx‘,‘parent_id‘:None},
    {‘id‘:3,‘content‘:‘xxx‘,‘parent_id‘:None},
    {‘id‘:4,‘content‘:‘xxx‘,‘parent_id‘:1},
    {‘id‘:5,‘content‘:‘xxx‘,‘parent_id‘:4},
    {‘id‘:6,‘content‘:‘xxx‘,‘parent_id‘:2},
    {‘id‘:7,‘content‘:‘xxx‘,‘parent_id‘:5},
    {‘id‘:8,‘content‘:‘xxx‘,‘parent_id‘:3},
]
#python里面的apend之类的东西都是引用的原来数据的内从地址,对原数据进行操作的话
#我们引用的数据也会发生一样的变化(字典列表之类的)

#骗子的方法
# for i in msg_list:
#     i[‘child‘]=[]
# for i in range(len(msg_list)-1,-1,-1):
#     if msg_list[i][‘parent_id‘]:
#         msg_list[msg_list[i][‘parent_id‘] - 1][‘child‘].append(msg_list[i])
# new_msg_list = [i for i in msg_list if i[‘parent_id‘] is None]
# print(new_msg_list)

#老师讲的方法
# v=[row.setdefault(‘child‘,[]) for row in msg_list] #这和地下的第一个for循环的作用是一样的,给每一个元素加一个‘child‘:[]
# print(msg_list)
#如果我们想加快索引(快点找到数据的话)就建一个字典的数据结构
msg_list_dict={} #加快索引,节省时间
for item in msg_list:
    item[‘child‘]=[]
    msg_list_dict[item[‘id‘]]=item #字典中key为item[‘id‘],value为item
    #把字典数据结构填上数据,能够加快索引,而且我们数据还是占得原来的内从空间
    #我们只是引用了数据的内容空间,所以不存在新的数据结构浪费空间一说
result=[]
for item in msg_list:
    pid=item[‘parent_id‘]
    if pid: #如果parent_id不为空,说明它是子级,要把自己加入对应的父级
        msg_list_dict[pid][‘child‘].append(item)
    else: #如果为空,说明他是父级,要把它单独领出来用
        result.append(item)
#result就是我们最终要的结果,因为这里面全是引用,所有数据的内存地址都没有变
#只不过被多个数据结构引用了而已
print(result)

  

时间: 2024-10-30 05:58:08

Django多级评论的相关文章

Django第8章: 多级评论树

模拟实现流程 代码 // 传入的参数形式要求 comment_list = comment_list = [ {'id': 1, 'content': '1111', 'parent_id': None, 'children_contents':[]}, ... ] // 转换成嵌套结果列表 def transform_list(comment_list): comment_dict = {} for d in comment_list: id = d.get('id') comment_dic

day20 project+查看新闻列表 + 点赞 + 图片验证码 + 评论和多级评论 + 后台管理 + webSocket + kindEditor

Day20回顾: 1. 请求生命周期 2. 中间件 md = [ "file_path.classname" ] process_request[可有可无] process_response[必须有] process_request process_response process_request process_response process_request process_response process_request process_response 路由->函数 3.

django(19)、多级评论树结构

评论列表转换 列表转换前 comment_list = [ {'id': 1, 'content': '1111', 'parent_id': None, 'children_contents':[]}, {'id': 2, 'content': '222', 'parent_id': 1, 'children_contents':[]}, {'id': 3, 'content': '33333', 'parent_id': 1, 'children_contents':[]}, {'id':

多级评论

# data=[ # [11,22,33], # [44,55,66] # ] # data[0].append(data[1]) # print(data) # data[1].append(77) # # 由于[11, 22, 33, [44, 55, 66, 77]]和[[11, 22, 33, [44, 55, 66, 77]], [44, 55, 66, 77]] # # 引用的是同一块内存地址,所以谁添加了内容对应的也跟随添加 # data=[ # {'k1':'v1'}, # {'

django-jsonp 瀑布流 组合搜索 多级评论

一.JSONP jsonp 原理: 1.浏览器同源策略        通过Ajax,如果在当前域名去访问其他域名时,浏览器会出现同源策略,从而阻止请求的返回 2.img,script,link,iframe - 不鸟同源策略        src属性的标签,一般不鸟同源策略       3.JSONP        利用 不鸟同源策略 的标签,发送跨域Ajax请求, <script>标签 index.html <!DOCTYPE html> <html lang="

多级评论代码实现(前端篇)

1.递归法: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .comment-box{ margin-left: 20px; } </style> </head> <body> <div class=&qu

报障系统之多级评论前戏

前戏: 列表添加: v1 = [1,2,3,4] v1.append(123) print(v1) data = [ [11,22,33], [44,55,66] ] data[0].append(data[1]) print(data) # data = [ # [11,22,33, [44,55,66]], # [44,55,66] # ] data[1].append(77) print(data) # data = [ # [11,22,33, [44,55,66,77]], # [44

报障系统之多级评论

一.列表前戏: #例1 v1 = [1,2,3,4] v1.append(123) print(v1)#[1, 2, 3, 4, 123] #例2 v1 = {'k1':'v1'} v1['k2'] = 'v2' print(v1)#{'k1': 'v1', 'k2': 'v2'} #例3 data = [ [11,22,33], [44,55,66] ] data1=data[0] data2 = data1.append(data[1]) print(data1)#[11, 22, 33,

多级评论的实现

comment_list=models.Comment.objects.filter(news_id=new_id) ret=[] # 最终拿到的数据 comment_list_dict={} # 构建的中间字典 for row in comment_list: # 通过查到的数据中的id作为key,每一行数据作为value生成一个字典 row.update({"children":[]}) # 构建一个键children对应一个空列表 comment_list_dict[row[&q