使用django发送邮件

django通过封装python的smtplib实现发送邮件功能。django 1.11官网翻译内容见:http://www.jianshu.com/p/c02aac458a71。

下面的内容结合django by example CH2 第一节的内容完成,翻译了第一节的内容,使用python2.7+Django1.11测试,修正了书中代码的错误,添加了注意事项,并写出了测试结果。

通过e-mail分享文章

首先,我们允许用户通过发送邮件的方式分享文章。想一下我们如何通过上一章学到views、URLs和templates实现这个功能。如果要允许用户通过e-mail发送邮件,我们需要:

  • 为用户创建一个form来填写它们的名字、e-mail,接收文章的e-mail和评论(可选);
  • 在views.py文件中创建一个视图来处理post的数据并发送e-mail;
  • 在urls.py文件中为新建立的视图添加URL。
  • 创建一个模板来展示表单。

使用Django创建form

form即为表单,下面表述中form与表单意义相同。

我们从创建分享文章的form开始。Django内置form框架帮助我们非常方便的创建form。form矿建允许我们定义form的字段、指定它们展示的方式、输入数据的验证方式。Django form矿建还提供灵活的方法来渲染form和处理数据。

Django提供两个基准类来创建forms:

Form:帮助我们创建标准forms;

ModelForm:帮助我们创建增加或者修改模型实例的forms。

首先,在blog应用的根目录新建一个名为forms.py的文件,并添加以下代码:

from django import forms


class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False, widget=forms.Textarea)

这是你的第一个django表单(form)。我们来看一下通过集成Form类创建的form。我们使用不同的字段对输入进行验证。

注意:

Forms可以放在Django项目的任何位置,为了方便起见,我们将其放在每个项目的forms.py文件中。

name字段是一个CharField。这种类型的字段渲染一个的HTML元素。每一个字段都对应一个小组件,这个小组件决定HTML如何展示该字段。默认的组件可以通过设置widget属性进行覆盖。在comments字段中,我们使用Textarea组件将其展示为一个