我正在使用Django的标准评论系统,我想扩展其反垃圾邮件蜜罐功能。
我想把字段的默认“名称”和“id”更改为垃圾邮件机器人(如“网站”)更具吸引力。我检查了html,看起来像这样:
<p style="display:none;">
<label for="id_honeypot">Never send a human to do a machine's job</label>
<input type="text" name="honeypot" id="id_honeypot" />
</p>
我是否认为更改此元素的默认值会增强其反垃圾邮件功能?我尝试在django/contrib/comments/forms.py
中修改它,如下所示:
class CommentForm(CommentDetailsForm):
#use to be honeypot = forms.CharField(...
website = forms.CharField(required=False,
label=_('Never send a human to do a machines job')
def clean_honeypot(self):
"""Check that nothing's been entered into the honeypot."""
value = self.cleaned_data["website"]
if value:
raise forms.ValidationError(self.fields["website"].label)
return value
这成功地更改了django BUT生成的html中的name
和id
,然后整个机制停止工作 - 我尝试填充这个不可见的字段,提交并添加了评论。
我还有一些其他的想法,但首先我真的想让这个工作 - 是否可以修改默认的蜜罐name
和id
并让它像它应该的那样工作?
答案 0 :(得分:0)
如果有更多的时间来修补我找到了我的两个问题的答案:
为了修改标准蜜罐或创建自己的蜜罐,您必须通过添加CommentForm
函数以及clean_NAME_OF_HONEYPOT
变量来扩展NAME_OF_HONEYPOT
类,这两个函数看起来都是与标准类似,您还必须覆盖security_errors
函数,以在字典中包含新/修改过的蜜罐的名称。
执行此操作的最佳方法是按照此处所述创建自定义评论应用:https://docs.djangoproject.com/en/dev/ref/contrib/comments/custom/。
我希望这个答案可以帮助我处理其他人。