Flask初学者教程:文件上传与邮件发送实战
87 浏览量
更新于2024-09-01
收藏 49KB PDF 举报
“flask入门之文件上传与邮件发送示例 - 学习如何在Flask应用中实现文件上传和邮件发送功能。”
在这个教程中,我们将探讨如何使用Python的Flask框架来处理文件上传以及发送电子邮件。Flask是一个轻量级的Web服务器网关接口(WSGI)Web应用框架,适合构建小型到中型的应用。
### 一、原生文件上传
文件上传是Web应用中常见的需求。在Flask中,我们可以使用`request`对象来处理上传的文件。首先,我们需要创建一个HTML表单,让用户选择要上传的文件。在`form.html`中,我们看到一个`<form>`标签,它设置为`multipart/form-data`编码类型,这是上传文件所必需的:
```html
<form action="" method="post" enctype="multipart/form-data">
<p>修改头像 <input type="file" name="file"></p>
<p><input type="submit" value="提交"></p>
</form>
```
当用户选择文件并提交表单后,Flask应用中的视图函数将接收这个请求。在`manage.py`中,定义了一个名为`icon`的视图函数,它检查请求方法是否为`POST`,并且`file`字段是否存在。如果满足条件,就从`request.files`中获取文件,保存到服务器,并返回渲染后的页面:
```python
@app.route('/upload/', methods=['GET', 'POST'])
def icon():
img_name = None
if request.method == 'POST' and 'file' in request.files:
file = request.files.get('file')
filename = file.filename # 拿到文件名称
imgPath = os.path.join(os.getcwd(), 'static/upload/' + filename)
file.save(imgPath)
img_name = filename
return render_template('user/change_icon.html', img_name=img_name)
```
### 二、使用WTForms和Bootstrap进行文件上传
为了增强用户体验和表单验证,可以使用`Flask-WTF`库。首先导入所需的库,然后创建一个表单类,包含`FileField`用于文件上传,以及`SubmitField`用于提交表单:
```python
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed, FileRequired
from wtforms import SubmitField
class UploadForm(FlaskForm):
file = FileField('选择文件', validators=[FileAllowed(['jpg', 'png'], '只能上传.jpg或.png文件!'), FileRequired('请选择文件')])
submit = SubmitField('上传')
```
接着,可以在模板中使用Bootstrap样式渲染这个表单,提供更美观的界面。
### 三、发送邮件
在Flask应用中发送邮件,通常会使用`Flask-Mail`库。首先安装该库,然后配置SMTP服务器信息,创建一个邮件实例,编写邮件内容,最后通过SMTP发送邮件:
```python
from flask_mail import Mail, Message
app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'your_email@example.com'
app.config['MAIL_PASSWORD'] = 'your_password'
mail = Mail(app)
def send_email(subject, sender, recipients, body):
msg = Message(subject, sender=sender, recipients=recipients)
msg.body = body
mail.send(msg)
```
在需要发送邮件的地方,调用`send_email`函数即可。
总结,本教程涵盖了Flask应用中两个关键功能:文件上传和邮件发送。通过原生方法和WTForms库,我们可以创建用户友好的文件上传表单;通过`Flask-Mail`,我们可以轻松地发送邮件。这两个功能对于许多Web应用来说都是必不可少的,学习和掌握它们对提升Flask应用的实用性大有裨益。
282 浏览量
1149 浏览量
777 浏览量
点击了解资源详情
2024-12-25 上传
weixin_38643307
- 粉丝: 8
- 资源: 925