BBS项目分布搭建五(评论相关功能实现)

BBS项目分布搭建五(评论相关)

1. 根评论逻辑实现

# 在models.py文件中 修改:
# 7. 评论表
    parent = models.ForeignKey(to='self', null=True)
    
    
# 添加路由(最好放在文章详情之上):
    # 评论功能
    url(r'^comment/', views.comment),
    
    
# 在views.py中 添加功能:
# 10. 评论功能
def comment(request):
    if request.is_ajax() and request.method == 'POST':
        back_dic = {'status': 200, 'msg': '评论成功'}


        # 1. 接收参数
        content = request.POST.get('content')
        article_id = request.POST.get('article_id')


        # 2. 验证参数
        if not content:
            back_dic['status'] = 1013
            back_dic['msg'] = '评论内容不能为空哦~'
            return JsonResponse(back_dic)

        if not article_id:
            back_dic['status'] = 1014
            back_dic['msg'] = '评论的文章不存在'
            return JsonResponse(back_dic)


        # 3. 验证是否登录,验证尽量的完善
        if not request.session.get('username'):
            back_dic['status'] = 1015
            back_dic['msg'] = '请先登录在评论'
            return JsonResponse(back_dic)


        # 4. 处理评论逻辑
        # 4.1 操作评论表,文章表(评论数)
        # 3.2 事务:保证数据安全,ACID四大特性,原子性,保证的是同一个事务中的SQL必须同时成功,同时失败
        # 3.3 在企业中,遇到跟财务相关的需求,尽量都要使用事务
        from django.db import transaction

        with transaction.atomic():
            models.Article.objects.filter(pk=article_id).update(comment_num=F('comment_num') + 1)
            models.Comment.objects.create(
                content=content,
                article_id=article_id,
                user_id=request.session.get('id'),
            )
        return JsonResponse(back_dic)

    return HttpResponse('ok')



# 修改article_detail.html文件
# 在 {% block content %} 标签中添加以下内容:
    {#    评论样式开始#}
    {% if request.session.username %}
    

发表评论

{% endif %} {# 评论样式结束#} # 在 {% block js %} 标签中添加以下内容: // 提交评论 $(".commit").click(function () { // 先获取评论内容 var content = $('#content').val(); var article_id = '{{ article_id }}'; // 拿到文章id比对 // 提交ajax $.ajax({ url: '/comment/', type: 'post', data: {'content': content, article_id: article_id, }, success: function (res) { console.log(res); } }) })

BBS项目分布搭建五(评论相关功能实现)_第1张图片
BBS项目分布搭建五(评论相关功能实现)_第2张图片

2. 评论内容前端列表样式准备

# 修改article_detail.html文件
# 在 {% block content %}标签中添加:
    
    {#    评论列表开始#}
    

评论列表

  • # 1楼 2022-03-08 吾 荒天帝 {{ comment.create_time|date:'Y-m-d H:i' }} {{ comment.user.username }} 回复

    一剑断万古! 他化自在,他化万古!

  • # 1楼 2022-03-08 吾 荒天帝 {{ comment.create_time|date:'Y-m-d H:i' }} {{ comment.user.username }} 回复

    一剑断万古! 他化自在,他化万古!

  • # 1楼 2022-03-08 吾 荒天帝 {{ comment.create_time|date:'Y-m-d H:i' }} {{ comment.user.username }} 回复

    一剑断万古! 他化自在,他化万古!

  • # 1楼 2022-03-08 吾 荒天帝 {{ comment.create_time|date:'Y-m-d H:i' }} {{ comment.user.username }} 回复

    一剑断万古! 他化自在,他化万古!

  • # 1楼 2022-03-08 吾 荒天帝 {{ comment.create_time|date:'Y-m-d H:i' }} {{ comment.user.username }} 回复

    一剑断万古! 他化自在,他化万古!

{# 评论列表结束#} # 在 {% block css %}