Django: Обновление формы капчи
У меня есть форма регистрации с несколькими полями и капчей. Я новичок в django-simple-captcha, и я сделал кнопку обновления, чтобы обновлялась только капча. Возможно ли это сделать? Как мне написать функцию?
register.html
<div><input type="text" name="studentId"></div>
<div><input type="text" name="Name"></div>
...
<div>{{ form.captcha }}</div>
<button type="button" class="btn">Refresh</button> // refresh captcha
<button type="submit" class="btn btn-primary">Submit</button>
forms.py
from captcha.fields import CaptchaField
class MyForm(forms.Form):
captcha = CaptchaField()
views.py
from .forms import MyForm
def preRegistration(request):
form = MyForm(request.POST)
if request.method == 'GET':
return render(request, 'registration_form.html', {"form": form})
if request.method == 'POST':
studentId = request.POST.get('studentId') ...
if form.is_valid():
Applicant.objects.create(studentID=studentID, ...)
return render(request, 'login.html')
else:
messages.error(request, 'Wrong Captcha!')
return render(request, 'registration.html', {"form": form})
def refreshCaptcha():
...
django-simple-captcha предоставляет код для обновления капчи при нажатии на кнопку.
Вы можете сделать что-то вроде этого.
html:
<form action='.' method='POST'>
{{ form }}
<input type="submit" />
<button class='js-captcha-refresh'></button>
</form
javascript:
$('.js-captcha-refresh').click(function(){
$form = $(this).parents('form');
$.getJSON($(this).data('url'), {}, function(json) {
// This should update your captcha image src and captcha hidden input
});
return false;
});
Для получения более подробной информации проверьте этот url django_simple_captcha