Flask 基础教学(一)
本教程旨在为初学者提供一个关于 Flask 基础知识的全面介绍。Flask 是一个轻量级的 Python Web 框架,非常适合新手入门。在本教程中,我们将从环境准备和 Flask 安装开始,然后创建一个简单的 Flask 应用,介绍路由和视图函数,以及如何使用模板渲染和处理静态文件。此外,我们还将探讨如何处理表单数据,并简要介绍部署 Flask 应用的过程。在阅读本教程后,您将了解 Flask
Flask 基础教学(一)
Flask 是一个轻量级的 Python Web 框架,非常适合新手入门。本教程将详细介绍 Flask 的基础知识,帮助您快速上手。
1. 环境准备
在开始学习 Flask 之前,确保您的计算机已安装 Python。您可以通过在终端或命令提示符中输入以下命令来检查 Python 是否已安装:
python --version
如果您尚未安装 Python,请访问 Python 官网 下载并安装合适的版本。
2. 安装 Flask
首先,我们需要安装 Flask。在终端或命令提示符中输入以下命令以安装 Flask:
pip install Flask
pip 是 Python 的包管理器,可以帮助您安装和管理 Python 库。
3. 创建一个简单的 Flask 应用
3.1 创建项目文件夹
首先,在您的计算机上创建一个新文件夹,用于存放您的 Flask 项目。例如,您可以创建一个名为 my_flask_app 的文件夹。
3.2 创建 Python 文件
在项目文件夹中,创建一个名为 app.py 的新 Python 文件。您将在此文件中编写 Flask 应用的代码。
3.3 编写 Flask 代码
打开 app.py 文件,并输入以下代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
这段代码创建了一个 Flask 应用实例,并定义了一个视图函数(hello_world),该函数将在访问根 URL(/)时被调用。保存文件。
app.run() 是 Flask 应用程序中的一个方法,用于启动 Flask 内置的开发 Web 服务器。在您的 app.py 文件中,这行代码使您的 Flask 应用在本地计算机上运行,并可以通过 Web 浏览器访问。当您运行 python app.py 命令时,app.run() 方法将被调用,启动 Web 服务器并监听请求。
默认情况下,app.run() 将使您的应用程序在本地主机(127.0.0.1)的 5000 端口上运行。您可以通过传递参数来自定义主机和端口,例如:
app.run(host='0.0.0.0', port=8000)
此代码将使您的应用程序在所有可用网络接口上运行(例如,让其他计算机访问您的应用程序),并使用 8000 端口。
需要注意的是,在开发过程中使用 Flask 内置的开发 Web 服务器是非常方便的,但对于生产环境,您应该使用更强大、更稳定的 Web 服务器(例如 Gunicorn、uWSGI 或 Apache)来部署您的应用。
3.4 运行 Flask 应用
在终端或命令提示符中,导航到项目文件夹,然后输入以下命令运行 Flask 应用:
python app.py
在浏览器中访问 http://127.0.0.1:5000/,您将看到 “Hello, World!”。
4. 路由和视图函数
在 Flask 中,路由是指 URL 到视图函数的映射。视图函数是用于处理特定 URL 请求的函数。以下是一个带有多个路由和视图函数的示例:
修改app.py 文件,添加以下代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Welcome to the Home page!'
@app.route('/about')
def about():
return 'This is the About page.'
@app.route('/contact')
def contact():
return 'Feel free to contact us!'
if __name__ == '__main__':
app.run()
现在,我们为每个页面创建了不同的路由和视图函数。保存文件并运行 Flask 应用。尝试访问 http://127.0.0.1:5000/,http://127.0.0.1:5000/about 和 http://127.0.0.1:5000/contact,您将看到不同页面的内容。
5. 模板渲染
为了使页面更易于管理和设计,我们将使用模板渲染。Flask 使用 Jinja2 模板引擎进行模板渲染。
5.1 创建模板文件夹
首先,在项目文件夹中创建一个名为 templates 的文件夹。Flask 将在此文件夹中查找模板文件。
5.2 创建 HTML 模板
在 templates 文件夹中,为每个视图函数创建一个 HTML 文件(例如 home.html、about.html 和 contact.html)。
例如,在 home.html 文件中添加以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome to the Home page!</h1>
</body>
</html>
对于 about.html 和 contact.html,您可以使用类似的代码结构。
5.3 修改视图函数以使用模板
修改 app.py 文件,导入 render_template 函数,并修改视图函数以使用模板渲染。如下所示:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact')
def contact():
return render_template('contact.html')
if __name__ == '__main__':
app.run()
保存文件并运行 Flask 应用。现在,您的页面将使用 HTML 模板进行渲染。
6. 静态文件
静态文件(如 CSS、JavaScript 和图像)对于 Web 应用的外观和功能至关重要。在项目文件夹中创建一个名为 static 的文件夹。Flask 将在此文件夹中查找静态文件。
将您的 CSS、JavaScript 和图像文件放入 static 文件夹中。例如,您可以创建一个名为 styles.css 的 CSS 文件,并在其中添加一些样式。接下来,在 HTML 模板文件中(例如 home.html),添加以下代码以链接到 CSS 文件:
<head>
...
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
7. 表单处理
Flask 可以轻松处理表单。首先,安装 Flask-WTF 扩展:
pip install Flask-WTF
pip install email_validator
7.1 创建表单类
接下来,创建一个表单类,并在模板中添加表单。在项目文件夹中,创建一个名为 forms.py 的文件,并输入以下代码:
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Email
class ContactForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
email = StringField('Email', validators=[DataRequired(), Email()])
message = TextAreaField('Message', validators=[DataRequired()])
submit = SubmitField('Submit')
这段代码定义了一个联系表单,包括姓名、电子邮件、消息和提交按钮。
7.2 更新模板
修改 contact.html 模板,添加表单:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Contact</title>
</head>
<body>
<h1>Contact Us</h1>
<form method="POST" action="{{ url_for('contact') }}">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name }}
{{ form.email.label }} {{ form.email }}
{{ form.message.label }} {{ form.message }}
{{ form.submit }}
</form>
</body>
</html>
7.3 处理表单数据
接下来,在 app.py 文件中导入表单类,并处理提交的表单数据:
from flask import Flask, render_template, request, redirect, url_for, flash
from forms import ContactForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/')
def home():
return render_template('home.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = ContactForm()
if form.validate_on_submit():
name = form.name.data
email = form.email.data
message = form.message.data
# 这里可以处理表单数据,例如将其存储到数据库或发送电子邮件。
flash('Message sent successfully!', 'success')
return redirect(url_for('contact'))
return render_template('contact.html', form=form)
if __name__ == '__main__':
app.run()
现在,当用户提交表单时,我们将处理表单数据并显示成功消息。
8. 部署 Flask 应用
在开发过程中,您一直在使用 Flask 自带的开发服务器。然而,对于生产环境,您需要使用一个性能更好、更稳定的 Web 服务器。有许多选择,如 Gunicorn、uWSGI 和 Apache。
以 Gunicorn 为例,首先安装 Gunicorn:
pip install gunicorn
然后,运行以下命令启动 Gunicorn:
gunicorn app:app
在生产环境中,您还需要配置一个反向代理服务器,如 Nginx 或 Apache,以处理静态文件和负载均衡。
9. 总结
在本教程中,我们详细介绍了 Flask 的基础知识,包括环境准备、安装 Flask、创建简单的 Flask 应用、路由和视图函数、模板渲染、静态文件以及表单处理。这些基本概念将帮助您开始构建自己的 Web 应用。随着您对 Flask 的深入了解,您可能会遇到需要进一步学习的主题,例如:
- 数据库集成:为您的应用添加数据存储功能,例如使用 Flask-SQLAlchemy 连接到关系型数据库。
- 用户认证和授权:使用 Flask-Login 和 Flask-User 扩展为您的应用添加用户认证和权限管理功能。
- RESTful API:构建 RESTful API 以便其他客户端(如移动应用或其他服务)能够访问您的应用数据。Flask-RESTful 和 Flask-RESTPlus 是两个流行的扩展。
- 错误处理:学习如何优雅地处理应用中可能出现的错误和异常。
- 单元测试:为您的应用编写测试用例,确保代码的质量和稳定性。
- 缓存和性能优化:使用 Flask-Caching 扩展为您的应用添加缓存功能,提高响应速度。
- 异步任务:使用 Celery 处理耗时的后台任务,不影响应用的响应速度。
要深入了解 Flask,建议参阅 Flask 官方文档 和其他教程。祝您学习愉快!
更多推荐

所有评论(0)