Форма, которую вы указали not working
:
<form class="contact-form" action="" method="GET">
{% csrf_token %}
{% for field in form %}
{{ field|add_class:"input" }}
{% endfor %}
<button class="button" type="submit">Send</button>
</form>
Вы можете видеть, что вы использовали method="GET"
. Тогда в ваших взглядах:
def index(request):
if request.method == 'GET':
form = ContactForm()
else:
form = ContactForm(request.POST or None)
if form.is_valid():
fullname = form.cleaned_data['fullname']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
try:
send_mail(fullname, message, from_email,
['gulnarnecefova1996@gmail.com'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('home')
context['form'] = form
return render(request, "index.html", context)
Здесь вы использовали код для отправки почты внутри POST method block
как:
else:
form = ContactForm(request.POST or None)
if form.is_valid():
fullname = form.cleaned_data['fullname']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
try:
send_mail(fullname, message, from_email,
['gulnarnecefova1996@gmail.com'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('home')
Итак, когда вы отправляете форму, она отправляется как get
запрос. И запрос get
обрабатывается этим блоком:
if request.method == 'GET':
form = ContactForm()
Следовательно, функция рассылки не работает.
Попробуйте изменить метод на post
в HTML-форме.