Задать вопрос
@black_xe

[django] При отправки формы обратной связи, сайт возвращает ошибку Server Error (500)?

Настроил форму:
forms.py
from django import forms

class ContactForm(forms.Form):
	subject = forms.CharField(max_length = 100)
	sender = forms.EmailField()
	phone = forms.CharField()
	message = forms.CharField()
	copy = forms.BooleanField(required = False)


views.py
def contactView(request):
	if request.method == 'POST':
		form = ContactForm(request.POST)
		#Если форма заполнена корректно, сохраняем все введённые пользователем значения
		if form.is_valid():
			subject = form.cleaned_data['subject']
			sender = form.cleaned_data['sender']
			phone = form.cleaned_data['phone']
			message = form.cleaned_data['message']
			copy = form.cleaned_data['copy']

			recipients = ['serega_s98@mail.ru']
			#Если пользователь захотел получить копию себе, добавляем его в список получателей
			if copy:
				recipients.append(sender)
			try:
				send_mail(subject, message, 'serega_s98@mail.ru', recipients)
			except BadHeaderError: #Защита от уязвимости
				return HttpResponse('Invalid header found')
			#Переходим на другую страницу, если сообщение отправлено
			return render(request, 'pages/thanks.html')
	else:
		#Заполняем форму
		form = ContactForm()
	#Отправляем форму на страницу
	return render(request, 'pages/contact.html', {'form': form})


urls.py
urlpatterns = [
    url(r'^contact/$', views.contactView)
]


contact.html
{% block content %}
<form action="/contact/" method="post">{% csrf_token %}
    {{ form.non_field_errors }}
	<div>
	  <label for="id_subject">Тема:</label>
	  {{ form.subject.errors }}
	  {{ form.subject }}
	</div>
	<div>
	  <label for="id_sender">E-mail:</label>
	  {{ form.sender.errors }}
	  {{ form.sender }}
	</div>
	<div>
	  <label for="id_sender">Phone:</label>
	  {{ form.phone.errors }}
	  {{ form.phone }}
	</div>
	<div>
	  <label for="id_message">Комментарий:</label>
	  {{ form.message.errors }}
	  {{ form.message }}
	</div>
	<div>
	  {{ form.copy.errors }}
	  <label for="id_copy">Отправить копию себе {{ form.copy }}</label>
	</div>
	<input type="submit" value="Отправить"/>
</form>
{% endblock %}

При всем при этом я страницу /contact/ выгружаю на index
$("#cchrome").load("http://127.0.0.1:8000/contact");

Но вот при отправки формы, не зависимо с index или c /contact/, страница обновляется и показывает ошибку Server Error (500)
5a5d0cef7fe25012969630.png

Как починить ? =(
  • Вопрос задан
  • 598 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@IKMOL
знать бы какие у вас настройки, но там должно быть что такое:
Если на хостинге
EMAIL_HOST = 'smtp.gmail.com'
DEFAULT_FROM_EMAIL = 'mail@gmail.com'
EMAIL_HOST_USER = 'mail@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

или для теста на локалке
EMAIL_HOST = 'localhost'
EMAIL_HOST_USER = 'mail@mail.com'
EMAIL_HOST_PASSWORD = ''
EMAIL_PORT = 1025
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Ошибка возникает потому, что функция send_mail() не может подключиться к mail.ru Обратитесь к админу, чтобы открыл доступ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы