我正在使用 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 生成的 html 中的name
and id
,但是整个机制停止工作 - 我尝试填充这个不可见的字段,提交并添加了评论。
我也有其他一些想法,但首先我真的很想让这个工作 - 是否可以修改默认蜜罐name
并id
让它像它应该的那样工作?
PS我相信这样做更优雅的方法是扩展 django.contrib.comments 并在那里编写修改代码,而不是处理实际的 django 代码——实现这一点的最佳方法是什么?