博客评论(80)
显示根评论
1.render方法:
article_detail.html
{% extends 'base.html' %}
{% block page_main %}
<div class="article-detail">
<h1>{{ article.title }}</h1>
<p>{{ article.articledetail.content|safe }}</p>
</div>
{# 点赞和踩灭 区域#}
<div class="poll clearfix">
<div id="div_digg">
<div class="diggit action">
<span class="diggnum" id="digg_count">{{ article.up_count }}</span>
</div>
<div class="buryit action">
<span class="burynum" id="bury_count">{{ article.down_count }}</span>
</div>
<div class="clear" style="clear: both"></div>
<div class="diggword" id="digg_tips" style="color: red;"></div>
</div>
</div>
{# 评论 区域#}
{# 不管有没有登录都可以看到所有评论#}
<p>评论列表</p>
<ul class="comment_list list-group">
{% for comment in comment_list %}
<li class="list-group-item">
<div>
<a href="">#{{ forloop.counter }}楼</a>
<span style="color: gray;">{{ comment.create_time|date:"Y-m-d H-i" }}</span>
<a href=""><span>{{ comment.user.username }}</span></a>
<a href="" class="pull-right"><span>回复</span></a>
</div>
<div class="con">
{{ comment.content }}
</div>
</li>
{% endfor %}
</ul>
{# 线判断是否登录,要是没登录就不用显示评论了#}
{% if request.user.username %}
<div class="div_comment">
<p>昵称:<input type="text" id="tbCommentAuthor" class="author" disabled="disabled" size="50" value="{{ request.user.username }}"></p>
<p>评论内容</p>
<textarea name="" id="comment_content" cols="60" rows="10"></textarea>
<p>
<button id="comment_btn">提交评论</button>
</p>
</div>
{% else %}
<a href="/login/">请先登录</a>
{% endif %}
<script>
//提交评论
$("#comment_btn").on("click",function () {
var article_id=$(".keep_article_id").attr("article_id");
var content = $("#comment_content").val();
var pid = "";
$.ajax({
url:"/blog/comment/",
type:"post",
data:{
article_id:article_id,
content:content,
pid:pid
},
success:function (arg) {
console.log(arg);
//清空文本框
$("#comment_content").val("");
}
})
})
</script>
<div class="keep_article_id" article_id="{{ article.pk }}" username="{{ request.user.username }}"></div>
<script src="/static/js/article_detail.js"></script>
{% endblock %}
使用render方法的话,评论完的就必须要刷新页面才会显示
2.Ajax方法
views.py
def comment(request): print(request.POST) pid = request.POST.get("pid") article_id = request.POST.get("article_id") content = request.POST.get("content") user_pk = request.user.pk response = {} #判断是根评论 还是 子评论 if not pid: #这是根评论 comment_obj = models.Comment.objects.create(article_id=article_id,content=content,user_id=user_pk) response["create_time"] = comment_obj.create_time response["content"] = comment_obj.content response["username"] = comment_obj.user.username return JsonResponse(response)
article_detail.html
{% extends 'base.html' %}
{% block page_main %}
<div class="article-detail">
<h1>{{ article.title }}</h1>
<p>{{ article.articledetail.content|safe }}</p>
</div>
{# 点赞和踩灭 区域#}
<div class="poll clearfix">
<div id="div_digg">
<div class="diggit action">
<span class="diggnum" id="digg_count">{{ article.up_count }}</span>
</div>
<div class="buryit action">
<span class="burynum" id="bury_count">{{ article.down_count }}</span>
</div>
<div class="clear" style="clear: both"></div>
<div class="diggword" id="digg_tips" style="color: red;"></div>
</div>
</div>
{# 评论 区域#}
{# 不管有没有登录都可以看到所有评论#}
<p>评论列表</p>
<ul class="comment_list list-group">
{% for comment in comment_list %}
<li class="list-group-item">
<div>
<a href="">#{{ forloop.counter }}楼</a>
<span style="color: gray;">{{ comment.create_time|date:"Y-m-d H-i" }}</span>
<a href=""><span>{{ comment.user.username }}</span></a>
<a href="" class="pull-right"><span>回复</span></a>
</div>
<div class="con">
{{ comment.content }}
</div>
</li>
{% endfor %}
</ul>
{# 线判断是否登录,要是没登录就不用显示评论了#}
{% if request.user.username %}
<div class="div_comment">
<p>昵称:<input type="text" id="tbCommentAuthor" class="author" disabled="disabled" size="50" value="{{ request.user.username }}"></p>
<p>评论内容</p>
<textarea name="" id="comment_content" cols="60" rows="10"></textarea>
<p>
<button id="comment_btn">提交评论</button>
</p>
</div>
{% else %}
<a href="/login/">请先登录</a>
{% endif %}
<script>
//提交评论
$("#comment_btn").on("click",function () {
var article_id=$(".keep_article_id").attr("article_id");
var content = $("#comment_content").val();
var pid = "";
$.ajax({
url:"/blog/comment/",
type:"post",
data:{
article_id:article_id,
content:content,
pid:pid
},
success:function (arg) {
console.log(arg);
var create_time = arg.create_time;
var content = arg.content;
var username = arg.username;
var comment_li = '<li class="list-group-item"> <div> <span style="color: gray;">'+create_time+'</span> <a href=""><span>'+username+'</span></a></div> <div class="con">'+content+'</div> </li>';
$(".comment_list").append(comment_li);
//清空文本框
$("#comment_content").val("");
}
})
})
</script>
<div class="keep_article_id" article_id="{{ article.pk }}" username="{{ request.user.username }}"></div>
{# {% csrf_token %}#}
<script src="/static/js/article_detail.js"></script>
{% endblock %}
这样使用ajax后,新的评论就不是靠刷新页面了,而是通过 document操作实现的
JS小知识
在js里面:
var s = "hellow world";
console.log(s.charAt(6)); 通过索引找字符
console.log(s.indexOf("h")) 通过字符找索引
浙公网安备 33010602011771号