Django评论垃圾邮件过滤器

时间:2012-10-26 09:27:12

标签: python django django-forms spam

我昨天实施了评论框架,这一切都很有效。但是我设置了一个小脚本,所以当发布评论时我会收到电子邮件,所以如果我愿意,我可以发布评论。然而,昨晚我收到了来自机器人的大约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 %}

1 个答案:

答案 0 :(得分:2)

honeypot只是一个隐藏的填充,可能是由机器人填充而不是由真实用户填充。

当honeypot有值时,表单不会验证。

也许像Akismet这样的解决方案,例如集成在django-akismet中,可以为您提供更多帮助。