Python Django的电子邮件表单示例 [英] Python Django e-mail form example

查看:125
本文介绍了Python Django的电子邮件表单示例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的网站上填写联系表。我可以在任何地方找到PHP电子邮件表单,但没有Django的例子。我不知道该怎么做,所以我问是否有任何人可以从头开始告诉我 - 如何使用Django在网站上制作电子邮件联系表单?

解决方案

一个简单的例子可以是:



urls.py


  from django.conf.urls import patterns,url 
from yourapp import views

urlpatterns = pattern(
'',
url(r'^ email / $',
views.email,
name ='email'
),
url(r'^ thanks / $',
views.thanks,
name ='thanks'
),

forms.py

 $ $ $ $ $ $ $ $ $ $ $ $ $ $ 

$ b from_email = forms.EmailField(required = True)
subject = forms.CharField(required = True)
message = forms.CharField(widget = forms.Textarea)

views.py

来自django.core.mail的django.core.mail导入send_mail,来自django.http的BadHeaderError 
import HttpResponse,HttpResponseRedirect
from django.shortcuts import render,redirect
from yourapp.forms import ContactForm

def email(request):
if request.method =='GET':
form = ContactForm()
else:
form = ContactForm (request.POST)
if form.is_valid():
subject = form.cleaned_data ['subject']
from_email = form.cleaned_data ['from_email']
message = form.cleaned_data ['message']
try:
send_mail(subject,message,from_email,['admin@example.com'])
除了BadHeaderError:
return HttpResponse '找不到标题')
return redirect('thanks')
return render(请求,yourapp / email.html, {'form':form})

def感谢(请求):
返回HttpResponse('谢谢你的信息')
/ pre>

email.html

 code>< form method =post> 
{%csrf_token%}
{{form}}
< div class =form-actions>
< button type =submit>发送< / button>
< / div>
< / form>


I wanted to make a contact form on my website. I can find PHP e-mail forms everywhere, but there are no Django examples. I have no idea how to do it myself, so I'm asking if there is anyone who could tell me from scratch - how to make an e-mail contact form on website using Django?

解决方案

A simple example could be:

urls.py

from django.conf.urls import patterns, url
from yourapp import views

urlpatterns = patterns(
    '',
    url(r'^email/$',
        views.email,
        name='email'
        ),
    url(r'^thanks/$',
        views.thanks,
        name='thanks'
        ),
)

forms.py

from django import forms

class ContactForm(forms.Form):

    from_email = forms.EmailField(required=True)
    subject = forms.CharField(required=True)
    message = forms.CharField(widget=forms.Textarea)

views.py

from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect
from yourapp.forms import ContactForm

def email(request):
    if request.method == 'GET':
        form = ContactForm()
    else:
        form = ContactForm(request.POST)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            from_email = form.cleaned_data['from_email']
            message = form.cleaned_data['message']
            try:
                send_mail(subject, message, from_email, ['admin@example.com'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect('thanks')
    return render(request, "yourapp/email.html", {'form': form})

def thanks(request):
    return HttpResponse('Thank you for your message.')

email.html

<form method="post">
    {% csrf_token %}
    {{ form }}
    <div class="form-actions">
      <button type="submit">Send</button>
    </div>
</form>

这篇关于Python Django的电子邮件表单示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆