Форум сайта python.su
Не могу разобраться с тем, как отправлять email.
Есть такая страница. Там есть форма для отправки сообщения на email.
Вот мой код секции: с формой
<section id="contact"> <div class="container"> <div class="row"> <div class="col-lg-12 text-center"> <h2>Contact Me</h2> <hr class="star-primary"> </div> </div> <div class="row"> <div class="col-lg-8 col-lg-offset-2"> <form role="form" method="post" action=".">{% csrf_token %} <div class="row"> <div class="form-group col-xs-12 floating-label-form-group"> <label for="name">Name</label> <input class="form-control" type="text" name="name" placeholder="Name"> </div> </div> <div class="row"> <div class="form-group col-xs-12 floating-label-form-group"> <label for="email">Email Address</label> <input class="form-control" type="email" name="email" placeholder="Email Address"> </div> </div> <div class="row"> <div class="form-group col-xs-12 floating-label-form-group"> <label for="message">Message</label> <textarea placeholder="Message" class="form-control" rows="5"></textarea> </div> </div> <br> <div class="row"> <div class="form-group col-xs-12"> <button type="submit" class="btn btn-lg btn-success" value="Submit" />Send</button> </div> </div> </form> </div> </div> </div> </section>
class ContactForm(forms.Form): name = forms.CharField() subject = forms.CharField(max_length=100) sender = forms.EmailField() message = forms.CharField()
def contact(request): subject = request.POST.get('subject', '') message = request.POST.get('message', '') sender = request.POST.get('sender', '') if request.method == 'POST': form = ContactForm(request.POST) try: send_mail(subject, message, sender, ['kozlovsky.a.a@gmail.com']) except BadHeaderError: return HttpResponse('Invalid header found.') else: form = ContactForm() return render(request, 'index.html', {'form':form,})
MAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # Optional SMTP authentication information for EMAIL_HOST. EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER ='myemail@gmail.com' EMAIL_HOST_PASSWORD = 'password' EMAIL_PORT = 587 EMAIL_USE_TLS = True
Офлайн
В чем проблема то? Вы забыли рассказать, что именно не получается.
Судя по коду, работать он у Вас не будет ввиду того, что поля формы в шаблоне и в коде тупо не совпадают:
class ContactForm(forms.Form): name = forms.CharField() subject = forms.CharField(max_length=100) sender = forms.EmailField() message = forms.CharField()
<input class="form-control" type="text" name="name" placeholder="Name"> <input class="form-control" type="email" name="email" placeholder="Email Address"> <textarea placeholder="Message" class="form-control" rows="5"></textarea>
def contact(request): subject = request.POST.get('subject', '') # Где оно в форме? message = request.POST.get('message', '') # Где оно в форме? sender = request.POST.get('sender', '') # Где оно в форме?
Офлайн
FishHook
проблема в том, что после нажатия на кнопку просто перезагружается страница, а в строке ввода адреса повляется строка с данными, которые были введены в форму.
Теперь так:
models.py
class ContactForm(forms.Form): subject = forms.CharField(max_length=100) sender = forms.EmailField() message = forms.CharField()
def contact(request): subject = request.POST.get('name', '') message = request.POST.get('message', '') sender = request.POST.get('email', '') if request.method == 'POST': form = ContactForm(request.POST) try: send_mail(subject, message, sender, ['yourmail@gmail.com']) except BadHeaderError: return HttpResponse('Invalid header found.') else: form = ContactForm() return render(request, 'index.html', {'form':form,})
<section id="contact"> <div class="container"> <div class="row"> <div class="col-lg-12 text-center"> <h2>Contact Me</h2> <hr class="star-primary"> </div> </div> <div class="row"> <div class="col-lg-8 col-lg-offset-2"> <form role="form"> <div class="row"> <div class="form-group col-xs-12 floating-label-form-group"> <label for="name">Name</label> <input class="form-control" type="text" name="name" placeholder="Name"> </div> </div> <div class="row"> <div class="form-group col-xs-12 floating-label-form-group"> <label for="email">Email Address</label> <input class="form-control" type="email" name="email" placeholder="Email Address"> </div> </div> <div class="row"> <div class="form-group col-xs-12 floating-label-form-group"> <label for="message">Message</label> <textarea placeholder="Message" name="message" class="form-control" rows="5"></textarea> </div> </div> <br> <div class="row"> <div class="form-group col-xs-12"> <button type="submit" class="btn btn-lg btn-success" value="Submit" />Send</button> </div> </div> </form> </div> </div> </div> </section>
Отредактировано kozlo22 (Июль 7, 2014 15:36:53)
Офлайн
<form role="form" method='post'>
Офлайн
inoksЯ это уже прописывал. В таком случае в адресной строке появляется адрес домашней страницы, но страница не загружается.
Офлайн
>>>if request.method == ‘POST’:
Ну дык по умолчанию формы гетом отправляют, а ты пост ждешь, нужно указать метод отправки данных.
<form method="post">{% csrf_token %}
Отредактировано FishHook (Июль 7, 2014 16:45:43)
Офлайн
kozlo22Нет такого понятия!!!!
но страница не загружается.
Офлайн
FishHook405 ошибку (METHOD NOT ALLOWED) возвращает.
Офлайн
Ну и где трейсбек?
Блин, ну ты ж вроде не маленький.
Офлайн
FishHookВот. Да, я что-то очень морожу
Ну и где трейсбек?
Блин, ну ты ж вроде не маленький.
Remote Address:127.0.0.1:8000
Request URL:http://localhost:8000/
Request Method:POST
Status Code:405 METHOD NOT ALLOWED
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:101
Content-Type:application/x-www-form-urlencoded
Cookie:csrftoken=rSRd9t6oVIe6zeZc7nvtpMrsWDDe9nh3
Host:localhost:8000
Origin:http://localhost:8000
Referer:http://localhost:8000/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Form Dataview sourceview URL encoded
csrfmiddlewaretoken:rSRd9t6oVIe6zeZc7nvtpMrsWDDe9nh3
name:adsad
email:some@gmail.com
message:asdsad
Response Headersview source
Allow:GET, HEAD, OPTIONS
Content-Type:text/html; charset=utf-8
Date:Mon, 07 Jul 2014 15:17:01 GMT
Server:WSGIServer/0.1 Python/2.7.6
X-Frame-Options:SAMEORIGIN
Офлайн