关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
前面就加入了Django Comments评论库,但是任何人都可以评论。只要填入格式正确的邮箱即可,这样很容易就产生垃圾评论和无法确认真实身份。现在加入了用户认证功能,就可以完善这一部分的内容了。
首先,还是先拿前端开刀。这里需要判断是否登录了和是否激活了。若没有登录和激活就不给评论;若登录用户了且已经激活就显示评论界面。
{# 导入评论库模块 #} {% load comments %} {% block blog_content %} <div class="panel panel-default"> <div class="panel-heading"> <h4>新的评论</h4> </div> <div class="panel-body"> <div class="comments_nav"> {% if user.is_authenticated %} {% if user.is_active %} {% get_comment_form for blog as blog_form %} <form class="form-horizontal" action="{% comment_form_target %}" method="post" id="comment_form"> {% csrf_token %} {{ blog_form.object_pk }} {{ blog_form.content_type }} {{ blog_form.timestamp }} {{ blog_form.site }} {{ blog_form.submit_date }} {{ blog_form.security_hash }} <input type="hidden" name="next" value="{%url 'detailblog' blog.id%}"/> <input type="hidden" name="reply_to" value="0" /> {#这部分不加也行,django_comments会自动取登录的用户信息#} {#<input type="hidden" name="name" value="{%if user.first_name%}{{user.first_name}}{%else%}{{user.username}}{%endif%}"/>#} {#<input type="hidden" name="email" value="{{ user.email }}"/>#} <div class="row"> <div class="col-md-12"> <a name="newcomment" id="newcomment"></a> <textarea class="input-xlarge comment_text" id="id_comment" name="comment" placeholder="请输入评论内容"></textarea> <p style="display:none;"> <label for="id_honeypot">如果你在该字段中输入任何内容,你的评论就会被视为垃圾评论。</label> <input type="text" name="honeypot" id="id_honeypot"> </p> </div> </div> <div class="row"> <div class="form-actions comment_button"> <input class="btn btn-info" id="submit_btn" type="submit" name="submit" value="提交"/> <input class="btn" id="reset_btn" type="reset" name="submit" value="清空"/> </div> </div> </form> {% else %} 您尚未激活,请先激活您的账户才能评论。(避免垃圾评论) {% endif %} {% else %} 您尚未登录,请先登录才能评论。(可以通过邮件得到评论提醒) {% endif %} </div> </div> </div> <div class="panel panel-default"> <div class="panel-heading"> <h4>评论列表</h4> </div> <div class="panel-body"> {% get_comment_list for blog as comments %} {% for comment in comments %} <div class="blog_comment" name="F{{comment.id}}"> <p class="comment_title">#{{ comment.submit_date|date:"Y-m-d H:i"}} @ {{ comment.user_name }}</p> <p class="comment_content">{{ comment.comment }}</p> </div> {% empty %} 暂无评论 {% endfor %} </div> </div> {% endblock %} {% block extra_footer %} {#设置提交评论#} <script type="text/javascript"> $(document).ready(function() { //代码高亮(注意,这里我添加了代码高亮处理,没有引用prettyPrint的话,可以去掉) prettyPrint(); //评论设置 $('#comment_form').submit(function() { if ($("#id_honeypot").val().length!=0) {alert("Stop!垃圾评论");return false;}; if ($("#id_comment").val().length==0) {alert("Error:请输入您的评论");$("#id_comment").focus();return false;}; $("#id_timestamp").value=event.timeStamp; $.ajax({ type: "POST", data: $('#comment_form').serialize(), url: "{% comment_form_target %}", cache: false, dataType: "html", success: function(html, textStatus) { window.location.reload(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("评论出错,检查是否缺少内容 " + errorThrown); } }); return false; }); }); </script> {% endblock %}
加入用户验证和去掉输入用户名、邮箱的文本框。若没有登录或者没有激活,则看不到评论框。
处理好前端模板页面之后,需要修改处理请求的方法。这个需要找到comments评论库的文件。我用的是WebFaction服务器,前面安装了comments评论库,具体路径是"~/lib/python2.7/django_contrib_comments-1.6.2-py2.7.egg/django_comments/views/comments.py"。这个路径仅供参考。
现在还不暂时不需要修改这个文件,打开之后发现会自动判断是否有提交用户数据,自动获取当前的用户。
不过,这个评论功能还不够完善,还没添加回复的功能。后面就继续修改添加回复功能。
相关专题: Django评论库开发
1595541621@qq.com
😁很棒
2018-04-04 11:08 回复