Ajax发表评论(Django)

2017-12-29  本文已影响0人  Jummy_Sweet

利用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')

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

上一篇下一篇

猜你喜欢

热点阅读