Не удается заставить Django-Simple-Captcha работать, сообщения отправляются даже при использовании неправильной капчи
Я думаю, что это простая проблема для решения, но я пытаюсь уже пару часов и думаю, что мой файл View испорчен. Капча отображается на моей странице, но когда я создаю пост и заполняю совершенно неправильную капчу, она все равно отправляется и обновляется.
Мой views-файл:
def discussions(request):
posts = Post.objects.filter(created__lte=timezone.now()).order_by('-created')
if request.method == 'POST':
captcha = CaptchaTestModelForm(request.POST)
if captcha.is_valid():
human = True
else:
captcha = CaptchaTestModelForm()
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.created = timezone.now()
post.save()
return redirect('discussions')
else:
form = PostForm()
captcha = CaptchaTestModelForm()
Исправил это, сделав следующее в моем представлении:
def discussions(request):
posts = Post.objects.filter(created__lte=timezone.now()).order_by('-created')
if request.method == 'POST':
form = CaptchaTestModelForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.created = timezone.now()
post.save()
return redirect('discussions')
else:
form = CaptchaTestModelForm()
return render(request, 'discussions/discussions.html', {'posts': posts, 'form': form,})
Моя форма:
class CaptchaTestModelForm(ModelForm):
captcha = CaptchaField()
class Meta:
model = Post
fields = ['entry', 'post_image']
labels = {
'entry': "Discuss something spoopy:",
'post_image': 'Post image (not mandatory)',
}