我昨天实施了评论框架,这一切都很有效。但是我设置了一个小脚本,所以当发布评论时我会收到电子邮件,所以如果我愿意,我可以发布评论。然而,昨晚我收到了来自机器人的大约20封垃圾邮件。我查看过谷歌分析,昨天我有28个页面浏览量和6个独特的视图。所以它看起来像1或2个机器人,并且已经多次填写表格。
当我查看网站上的源代码时,“蜂蜜罐”字段就在那里,所以我不确定为什么要捕获垃圾邮件。我想知道我的代码中是否遗漏了蜂蜜罐/垃圾邮件过滤器的功能?
以下是我的表格的所有代码,我对Django来说相当新,不管我错过了什么。我没有看到实施第三方垃圾邮件过滤器的原因,因为网站上的流量不是那么高。
/// FORM
{% get_comment_form for notice as form %}
<div id="comment_wrap">
<h1>Comments</h1>
{% get_comment_list for notice as comment_list %}
{% get_comment_count for notice as comment_count %}
<h2>{{comment_count}} comment{{ comment_count|pluralize:"s"}}</h2>
<form action="{% comment_form_target %}" method="post">
<table>
<tr>
<td>
{{ form.comment.errors }}
<div class="add">
<textarea id="id_comment" name="comment" value="Add a comment...">Add a comment...</textarea></div>
</td>
</tr>
</table>
<table>
<tr>
{{ form.non_field_errors }}
<td height="30">
{{ form.name.errors }}
<div class="name"><input id="id_name" type="text" maxlength="50" name="name" value="Name"></div>
</td>
<td>
{{ form.company.errors }}
<div class="company">
<input type="text" maxlength="50" name="company" id="id_company" value="Company">
</div>
</td>
<input type="hidden" name="url" value="http://www.website.org" />
<input type="hidden" name="email" value="email@email.com" />
<td>
<input type="hidden" name="next" value="{{notice.get_absolute_url}}#commentmade"/>
<button class="submit" value="Submit" >Submit</button>
</td>
</tr>
</table>
<div id="commentmade" style="display: none;"><p>Thanks for posting. Your comment is awaiting approval.</p></div>
<div class="fieldWrapper honey_pot">
{{ form.honeypot.errors }}
<label for="id_honeypot">If you enter anything in this field your comment will be treated as spam:</label>
{{ form.honeypot }}
{{ form.content_type.errors }}
{{ form.content_type }}
{{ form.object_pk.errors }}
{{ form.object_pk }}
{{ form.timestamp.errors }}
{{ form.timestamp }}
{{ form.security_hash.errors }}
{{ form.security_hash }}
</div>
</form>
</div>
{% for comment in comment_list reversed %}
<div id="comment_post">
<span class="name">{{comment.user_name}}</span>
<span class="company"> | {{comment.company}} | </span>
<span class="time">{{comment.submit_date|timesince}}</span>
<p>{{comment.comment}}</p>
</div>
{% endfor %}
答案 0 :(得分:2)
honeypot只是一个隐藏的填充,可能是由机器人填充而不是由真实用户填充。
当honeypot有值时,表单不会验证。
也许像Akismet这样的解决方案,例如集成在django-akismet中,可以为您提供更多帮助。