저는 장고의 표준 코멘트 시스템을 사용하고 있습니다. 스팸 방지 허니팟 기능을 확장하고 싶습니다.Django.contrib.comments 허니팟 사용자 정의
필드의 기본 "이름"과 "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
그리고이 성공적으로 장고에 의해 생성 된 HTML에 name
및 id
을 변경하지만 다음 전체 메커니즘이 작동을 멈 춥니 다 -이 보이지 않는 필드를 제출하고 의견을 채우는 시도 가 추가되었습니다.
나는 몇 가지 다른 아이디어를 가지고 있지만 우선이 기능을 얻고 싶습니다. 기본 허니팟 name
과 id
을 수정하고 가능한대로 작동시켜야합니까?
P. 나는 실제 장고 코드 대신 django.contrib.comments를 확장하고 거기에 수정 코드를 작성하는 것이 더 훌륭한 방법이라고 믿습니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 내 질문에 모두 답을 찾을 주위에 수리를 위해 조금 더 많은 시간이 주어