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

Вернуться на верх