공개 웹 사이트를 진행하면서 등록 양식부터 공개 양식을 보호하고 싶습니다.내 양식에 대한 새로운 재구성
나는 새로운 Google captcha를 발견했으며 내 장고 프로젝트에서 사용하고 싶습니다. https://github.com/praekelt/django-recaptcha : OK
- 이 도구를 설치 OK
- 페이지에 스크립트 JS 추가 : OK
- 편집 클래스를 양식에 이제 새로운 보안 문자를 제대로 넣었
를 OK,하지만 난 괜찮 아닌지 확인하는 방법을 모른다 : OK
import os
os.environ['RECAPTCHA_TESTING'] = 'True'
form_params = {'recaptcha_response_field': 'PASSED'}
form = RegistrationForm(form_params) # assuming only one ReCaptchaField
form.is_valid() # True
os.environ['RECAPTCHA_TESTING'] = 'False'
form.is_valid() # False
나는이 내 코드와 함께 작동하는 방법을 이해하지 않습니다 설명서를 읽기
는,이 섹션 것 같다. 더욱이 폼 검사는 뷰가 아닌 클래스 형식 (클린 데프)으로 수행되므로 이해가 안됩니다.
forms.py :
class RegisterForm(forms.Form):
username = forms.CharField(min_length=5, max_length=30, required=True)
email = forms.EmailField(max_length=75, required=True)
password = forms.CharField(widget=forms.PasswordInput, required=True)
password_check = forms.CharField(widget=forms.PasswordInput, required=True)
captcha = ReCaptchaField()
def clean(self):
cleaned_data = super(RegisterForm, self).clean()
username = cleaned_data.get('username')
email = cleaned_data.get('email')
password = cleaned_data.get('password')
password_check = cleaned_data.get('password_check')
# Username
if User.objects.filter(username=username).exists():
msg = "Ce nom d'utilisateur n'est pas disponible"
self.add_error('username', msg)
# Email
if User.objects.filter(email=email).exists():
msg = "Cet email est déjà associé à un utilisateur"
self.add_error('email', msg)
# Password
if password_check != password:
msg = "Le mot de passe et sa confirmation doivent être identiques"
self.add_error('password_check', msg)
return cleaned_data
views.py :
def register(request):
if request.user.is_authenticated():
return redirect('/')
else:
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username'].strip().capitalize()
email = form.cleaned_data['email']
password = form.cleaned_data['password']
#Success message
messages.success(request, "Votre inscription est désormais terminée. Connectez-vous pour démarrer l'aventure.")
return redirect(reverse('membres.views.login'))
else:
form = RegisterForm()
return render(request, 'membres/register.html', locals())
뻔뻔한 셀프 플러그인이지만, 구현하기가 훨씬 쉽다면 django-simple-math-captcha에 다음을 시도해보십시오. https://pypi.python.org/pypi/django-simple-math-captcha /1.0.5 – Brandon
안녕하세요, 저는 수학 보안 문자에 관심이 없습니다. 하지만 어쨌든 고마워요 –