Найти - Пользователи
Полная версия: Форма для отправки email
Начало » Django » Форма для отправки email
1 2
kozlo22
FishHook
а на форму action не надо вешать?
to_night
kozlo22
Не могу разобраться с тем, как отправлять email.Есть такая страница. Там есть форма для отправки сообщения на email.Вот мой код секции: с формой
Это не тестовое задание случаем?
kozlo22
to_night
Это не тестовое задание случаем?
Нет. Просто для себя пытаюсь сделать.
FishHook
kozlo22,
а CSRFMiddleware подключен?
to_night
Попробуй форму генерировать из модели а потом уже отправлять email из сгенерированой формы.И чтобы видеть, что отправляется, нужно установить в setttings EMAIL_BACKEND = ‘django.core.mail.backends.console.EmailBackend’ вместо EMAIL_BACKEND = ‘django.core.mail.backends.smtp.EmailBackend’ И вообще можно из консоли поотправлять, посмотреть что возвращает.
to_night
kozlo22
MAIL_BACKEND
У тебя так в settings, или тут ошибка?
kozlo22
FishHook
kozlo22,а CSRFMiddleware подключен?
да
to_night
Попробуй форму генерировать из модели а потом уже отправлять email из сгенерированой формы.И чтобы видеть, что отправляется, нужно установить в setttings EMAIL_BACKEND = ‘django.core.mail.backends.console.EmailBackend’ вместо EMAIL_BACKEND = ‘django.core.mail.backends.smtp.EmailBackend’ И вообще можно из консоли поотправлять, посмотреть что возвращает.
Так веб-консоль все показывает же. Но я таки поменял и не вижу никаких изменений. Ошибка в том, что используется неразрешенный метод. Наткнулся вот на это. Поменял представление:
class FormView(FormView):
	form_class = ContactForm
	initial = {'key':'value'}
	template_name = 'index.html'
	def get(self, request, *args, **kwargs):
		form = self.form_class(initial=self.initial)
		return render(request, self.template_name, {'form': form})
	def post(self, request, *args, **kwargs):
		form = self.form_class(request.POST)
		try:
			send_mail(subject, message, sender, ['email@gmail.com'])
		except BadHeaderError:
			return HttpResponse('Invalid header found.')
		return render(request, 'index.html', {'form':form,})
Ничего не изменилось.
А c настройкой urlов это не может быть связано?
kise97
# forms.py
class ContactForm(forms.Form):
    name = forms.CharField()
    subject = forms.CharField(max_length=100)
    sender = forms.EmailField()
    message = forms.CharField()
# views.py
def contact(request):
        form = ContactForm(request.POST or None)
        if form.is_valid():
		try:
			send_mail(
                               form.cleaned_data.get('subject'), 
                               form.cleaned_data.get('message'), 
                               form.cleaned_data.get('sender'), 
                               ['kozlovsky.a.a@gmail.com']
                         )
		except BadHeaderError:
			return HttpResponse('Invalid header found.')
        form = ContactForm()
	return render(request, 'index.html', {
            'form': form
        })
# urls.py
from .views import contact
urlpatterns = patterns('',
    (r'^contact/$', contact, name="contact"),
)

# index.html
<form action="{% url 'contact' %}" method="post">
    {{ form.as_p }}
    {% csrf_token %}
    <input type="submit" value="Submit">
</form>


Я так и не понял, зачем вы передавали форму во вьюху и при этом не использовали ее. Да и вообще, не вижу никаких вопросов в вашем вопросе.. .

FishHook
class FormView(FormView):
	form_class = ContactForm
	initial = {'key':'value'}
	template_name = 'index.html'
	def get(self, request, *args, **kwargs):
		form = self.form_class(initial=self.initial)
		return render(request, self.template_name, {'form': form})
	def post(self, request, *args, **kwargs):
		form = self.form_class(request.POST)
		try:
			send_mail(subject, message, sender, ['email@gmail.com'])
		except BadHeaderError:
			return HttpResponse('Invalid header found.')
		return render(request, 'index.html', {'form':form,})
Оригинальный код , прям из палаты мер и весов.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB