美文网首页
Ajax发表评论(Django)

Ajax发表评论(Django)

作者: Jummy_Sweet | 来源:发表于2017-12-29 15:24 被阅读0次

    利用ajax发表评论

    1.前言

    最近在搞登陆验证以及服务器的东西,加上自己的工作,这次我在我的博客上加了评论,由于时间原因没有看完django的评论系统文档 ,先写着ajax用着先

    2.评论

    首先做一个div的标签,里面填写了一个<textarea>的标签里面填写的是评论内容,由于我是做了登陆的,直接判断到如果没登陆就不能提交而去自动转去登陆页面,在<textarea>l里面我们定义好id=js-pl-textarea(id名字你可以另外起,不懂的,建议看下前端基础知识)然后写一个提交按钮,id=js-pl-submit就完成我们的前端编写

    3.编写ajax

    假设你的id名字跟我一样,或者自己去换ID名字,那么自己在下方更改

    <script type="text/javascript">
        $('#js-pl-submit').on('click',function () {
        var comments = $('#js-pl-textarea').val()
        if(comments == ""){
            alert("评论不能为空")
            return
        }
        $.ajax({
            cache:false,
            type:"POST",
            url:"{% url 'comments:addcomment' %}",
            data:{'post_id':{{ post.id }},'comments':comments},
            async:true,
            beforeSend:function (xhr,settings) {
                        xhr.setRequestHeader("X-CSRFToken","{{ csrf_token }}");
                    },
            success:function (data) {
                if (data.status == 'fail'){
                    if (data.msg == '用户未登录'){
                        window.location.href = {% url 'login' %};
                    }else {
                        alert(data.msg)
                    }
                }else if(data.status == "success"){
                    window.location.reload()
                }
            }
        })
        })
    </script>
    

    先是判断里面的提交内容是否为空,通过不为空后,我们在利用ajax的方式POST到后台,data是我们要传去的参数,比方我这里需要传的是第几篇博客,以及评论的内容,beforeSend这个是我运用防止csrf_tokensuccess是为了在次验证是否登陆而已,当然我们也要写好我们的url是指定到那里

    4. 后台

    虽然前端为我们验证了登陆,但是作为合格的码农,应该是要前后端验证,所以后端需要在验证多次是否登陆,判断登陆状态,在把前端传过来的第几篇文章去查数据库,然后获取到登陆的用户,以及前端传的来的评论内容,在插入数据库存起,返回去前端

    class AddCommentView(View):
        def post(self, request):
            if not request.user.is_authenticated():
                # 判断用户是否登录
                return HttpResponse('{"status":"fail", "msg":"用户未登录"}', content_type='application/json')
    
            post_id = request.POST.get('post_id',0)
            comments = request.POST.get('comments','')
            if int(post_id) >0 and comments:
                blog_comments = Comment()
                posts = Post.objects.get(id=int(post_id))
                posts.views -=1
                blog_comments.post = posts
                blog_comments.text = comments
                blog_comments.name = request.user
                blog_comments.save()
                posts.save()
                return HttpResponse('{"status":"success", "msg":"添加成功"}', content_type='application/json')
            else:
                return HttpResponse('{"status":"fail", "msg":"添加失败"}', content_type='application/json')
    

    这样我们就能完成我们的评论系统了,具体的可以看我博客,不懂或者有错误,可以留言指正,互相学习

    相关文章

      网友评论

          本文标题:Ajax发表评论(Django)

          本文链接:https://www.haomeiwen.com/subject/ofnigxtx.html