• 多级评论


    先来点:

    #----- 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]]
    View Code

    再来点:

    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]
    View Code

    不急,再来点:

    data = [
        {'k1':'v1'},
        {'k2':'v2'}
    ]
    
    for item in data:
        item['kk'] = 'vv'
    
    
    print(data)
    
    
    #[{'k1': 'v1', 'kk': 'vv'}, {'k2': 'v2', 'kk': 'vv'}]
    View Code

    不能再来了,来点爽快的:

    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))
    View Code

    .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 %}
                &nbsp; <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">&nbsp;&nbsp;支持</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"&nbsp;支持</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 %}
    
    
                });
    View Code
  • 相关阅读:
    感想篇:4)越来越精简的机械设计
    标准结构篇:5)热(散热)设计
    标准结构篇:4)EMC电磁兼容
    标准结构篇:2)O型橡胶密封圈
    进阶篇:1)制造发展阶段与对设计的要求
    标准结构篇:1)选用标准化的结构
    高阶篇:8.2)注塑模具讨论要点(讨模评审)
    基础篇:2.1)设计的深度-最小特征
    高阶篇:8.3)塑胶件试模
    高阶篇:8)注射模具开模流程总章
  • 原文地址:https://www.cnblogs.com/zhaochangbo/p/7486521.html
Copyright © 2020-2023  润新知