У меня возникли проблемы с работой капчи на странице «Связаться с нами» на моем веб-сайте. Я следовал инструкциям, приведенным в документации, но продолжаю получать ошибки. Кто-нибудь может помочь?
Вот мой файл form.py:
# main/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
# For the Captcha
from captcha.fields import CaptchaField
# For the Contact Us page
from django.core.validators import EmailValidator
class CustomUserCreationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def save(self):
user = super(UserCreationForm, self).save(commit=False)
user.email = self.cleaned_data["email"]
user.save()
return user
class ContactForm(forms.Form):
name = forms.CharField(required=True)
email = forms.EmailField(required=True)
# phone = forms.CharField(max_length=15)
# subject = forms.CharField(max_length=100)
message = forms.CharField(widget=forms.Textarea)
captcha = CaptchaField()
Contact Us
{% csrf_token %}
{% for field in form %}
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% endfor %}
{ form.captcha }}
Я пробовал перемещать элементы в коде несколькими разными способами, но мне не удалось заставить это работать, и я не могу понять, почему. Может ли кто-нибудь помочь мне с этим?
У меня возникли проблемы с работой капчи на странице «Связаться с нами» на моем веб-сайте. Я следовал инструкциям, приведенным в документации, но продолжаю получать ошибки. Кто-нибудь может помочь? Вот мой файл form.py: [code]# main/forms.py
from django import forms from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User
# For the Captcha from captcha.fields import CaptchaField
# For the Contact Us page from django.core.validators import EmailValidator
class CustomUserCreationForm(UserCreationForm): email = forms.EmailField(required=True)
class Meta: model = User fields = ("username", "email", "password1", "password2")
def save(self): user = super(UserCreationForm, self).save(commit=False) user.email = self.cleaned_data["email"] user.save() return user
class ContactForm(forms.Form): name = forms.CharField(required=True) email = forms.EmailField(required=True) # phone = forms.CharField(max_length=15) # subject = forms.CharField(max_length=100) message = forms.CharField(widget=forms.Textarea) captcha = CaptchaField() [/code] Вот мой urls.py: [code] # main/urls.py
from django.contrib import admin from django.urls import path, include from main.views import dashboard, register, about, blog
from django.contrib.auth import login as auth_login from django.shortcuts import redirect, render from django.urls import reverse from main.forms import CustomUserCreationForm
from captcha.fields import CaptchaField
from django.core.mail import EmailMessage from main.forms import ContactForm from django.conf import settings from django.http import HttpResponse
def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): # Process the form data name = form.cleaned_data['name'] email = form.cleaned_data['email'] # subject = form.cleaned_data['subject'] message = form.cleaned_data['message'] human = True
EmailMessage( 'Contact Form Submission from {}'.format(name), message, 'admin@lennyshort.com', # Send from your website ['admin@lennyshort.com'], # Send to (your admin email) [], reply_to=[email] # Email from the form to get back to ).send()
return redirect('success')
else: form = ContactForm() return render(request, 'contact.html', {'form': form})
def success(request): return HttpResponse('Success! Return to [url=#]my_domain.com[/url].') [/code] А вот мой контакт.html: [code]
Contact Us
{% csrf_token %} {% for field in form %}
{{ field.errors }} {{ field.label_tag }} {{ field }}
{% endfor %} { form.captcha }}
[/code] Я пробовал перемещать элементы в коде несколькими разными способами, но мне не удалось заставить это работать, и я не могу понять, почему. Может ли кто-нибудь помочь мне с этим?