先来点:
#----- 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) #3{'k1': 'v1', 'k2': 'v2'} #------3 data = [ [11,22,33], [44,55,66] ] print('先',data) data[0].append(data[1]) print('后',data) # 先 [[11, 22, 33], [44, 55, 66]] # 后 [[11, 22, 33, [44, 55, 66]], [44, 55, 66]]
再来点:
data = [ [11,22,33], [44,55,66] ] data[0].append(data[1]) #前 data[1].append(77) #中 print('后',data[0][3]) #后 # 前 [[11, 22, 33, [44, 55, 66]], [44, 55, 66]] # 中 [[11, 22, 33, [44, 55, 66, 77]], [44, 55, 66, 77]] # 后 [44, 55, 66, 77]
不急,再来点:
data = [ {'k1':'v1'}, {'k2':'v2'} ] for item in data: item['kk'] = 'vv' print(data) #[{'k1': 'v1', 'kk': 'vv'}, {'k2': 'v2', 'kk': 'vv'}]
不能再来了,来点爽快的:
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}, ] """ ## ---- 前戏 # v = [row.setdefault('child',[]) for row in msg_list] #这个写法 好像 有点难 # print(msg_list) for item in msg_list: #换个 简单一点点 item['child'] = [] print('***',msg_list) """ msg_list_dict = {} for item in msg_list: item['child'] = [] msg_list_dict[item['id']] = item result = [] for item in msg_list: pid = item['parent_id'] if pid: msg_list_dict[pid]['child'].append(item) else: result.append(item) print(result) """ **********************展示效果************************** [ {'id': 1, 'content': 'xxx', 'parent_id': None, 'child': [ {'id': 4, 'content': 'xxx', 'parent_id': 1, 'child': [ {'id': 5, 'content': 'xxx', 'parent_id': 4, 'child': [ {'id': 7, 'content': 'xxx', 'parent_id': 5, 'child': []}]}]}]}, {'id': 2, 'content': 'xxx', 'parent_id': None, 'child': [ {'id': 6, 'content': 'xxx', 'parent_id': 2, 'child': []}]}, {'id': 3, 'content': 'xxx', 'parent_id': None, 'child': [ {'id': 8, 'content': 'xxx', 'parent_id': 3, 'child': []}]}] """
评论以及多级评论
views.py
def comment(request): #评论 user_id = request.user.nid article_id = request.POST.get('article_id') comment_content =request.POST.get('comment_content') # print('%%%%%%%%%', comment_content) if request.POST.get('parent_comment_id'): c = int(request.POST.get('parent_comment_id')) comment_obj = models.Comment.objects.create(article_id=article_id, content=comment_content, user_id=user_id, parent_id_id=c) else: comment_obj = models.Comment.objects.create(article_id=article_id, content=comment_content,user_id=user_id) models.Article.objects.filter(nid=article_id).update(comment_count=F("comment_count")+1) response_ajax = {"comment_createTime":str(comment_obj.create_time)[:16]} return HttpResponse(json.dumps(response_ajax))
.HTML
{% block article %} <div class="article"> <h3 class="title" style="text-align: center">{{ article_obj.title }}</h3> <hr> <div class="author" style="text-align: center"> <div style=""> <b>作者</b> <b><a href="">{{ user_obj }}</a></b> </div> </div> <div class="show-content"> {{ article_detail.content|safe }} </div> <hr> </div> <div class="show-foot"> <img id="user_img" src="{{ user_obj.avatar.url }}" style="height: 80px; 80px;"> <div class="icon" style="margin-top: 30px"> {% csrf_token %} <a href="">评论</a> <a class="poll">赞(<span>{{ article_obj.up_count }}</span>)</a> <span class="c1"></span> </div> <div> <a href="">{{ user_obj.nickname }}</a> 发布于{{ article_obj.create_time }} <span>阅读({{ article_obj.read_count }})</span> <span>评论({{ article_obj.comment_count }})</span> </div> <hr> </div> <h5>已有评论</h5> <ul class="list-group comment_list"> {% for coment in coment_list %} <li class="list-group-item comment_item"> <a href="">{{ coment.user.username }}</a> <a href="">{{ coment.create_time|date:"Y-m-d H:i" }}</a> <a href="" class="pull-right"> 支持</a> <a href="#comment_content" class="pull-right reply_btn">回复</a> <span class="{{ coment.nid }}"></span> <div> {% if coment.parent_id %} <span><a href="">@</a>{{ coment.parent_id.user.username }}:{{ coment.parent_id.content }}</span> <p>{{ coment.content }}</p> {% else %} {{ coment.content }} {% endif %} </div> </li> {% endfor %} </ul> {# ---------- 评论内容输入框 -------------#} <form action=""> <textarea id="comment_content" cols="30" rows="5"> </textarea> <p> <input type="button" value="submit" class="btn btn-primary ajax_comment"> <span class="s1"></span> </p> </form> {% endblock %} {% block javascript %} <script> String.prototype.format= function(){ var args = arguments; return this.replace(/{(d+)}/g,function(s,i){ return args[i]; }); }; var article_id={{ article_obj.nid }}; var parent_comment_id=''; var father_comment_username=''; $(".poll").click(function () { // 实现一个点赞: 哪一个用户对哪一篇文章点了赞 {% if request.user.is_authenticated %} $.ajax({ url:"/app01/poll/", type:"POST", data:{"csrfmiddlewaretoken":$("[name='csrfmiddlewaretoken']").val(), "article_id":article_id }, success:function (data) { data=JSON.parse(data); if (data["status"]){ $(".poll").children("span").text(parseInt($(".poll").children("span").text())+1) } else { $(".poll").next(".c1").text("别,别 点!").css("color","red"); setTimeout(function () { $(".poll").next(".c1").text("") },1000) } } }); {% else %} location.href="/login{{ request.path }}"; {% endif %} }); //回复评论事件 $('.comment_list').on('click','.reply_btn',function (){ parent_comment_id=$(this).next().attr('class'); father_comment_username=$(this).siblings().eq(0).text(); $('#comment_content').val("@"+father_comment_username+" "); }); // 提交文章 评论 $(".ajax_comment").click(function () { var index=$('#comment_content').val().indexOf(' '); var comment_content=$('#comment_content').val().substr(index+1); {% if request.user.is_authenticated %} $.ajax({ url:"/app01/comment/", type:"POST", data:{"csrfmiddlewaretoken":$("[name='csrfmiddlewaretoken']").val(), "article_id":article_id, "comment_content":comment_content, "parent_comment_id":parent_comment_id }, success:function (data) { var temp=father_comment_username; if (temp){father_comment_username="<a>@</a>"+temp} alert(comment_content); data = JSON.parse(data); s = '<li class="list-group-item comment_item"> <a href="">{0}</a> <a href="">{1}</a> <a href="" ' +' class="pull-right" 支持</a> <a href="#comment_content" class="pull-right reply_btn">' +'回复</a> <span class="{2}"</span> <div> <span>{3}</span> <p>{4}</p> </div> </li>'; s=s.format( '{{ request.user.username }}', data["comment_createTime"], parent_comment_id, father_comment_username, comment_content ); $('.comment_list').append(s); $('#comment_content').val(""); father_comment_username=""; parent_comment_id=0 } }); {% else %} location.href="/login{{ request.path }}"; {% endif %} });