Python Flask:Web 开发入门教程
Flask 是一个轻量级的 Python Web 框架,以其简洁、灵活和易于扩展而闻名。本教程将引导你从零开始学习 Flask,逐步构建一个简单的 Web 应用程序,并深入探讨 Flask 的核心概念和高级功能。
一、安装和设置
首先,确保你的系统中安装了 Python。然后,使用 pip 安装 Flask:
bash
pip install Flask
创建一个名为 app.py
的文件,并编写最简单的 Flask 应用程序:
“`python
from flask import Flask
app = Flask(name)
@app.route(‘/’)
def hello_world():
return ‘Hello, World!’
if name == ‘main‘:
app.run(debug=True)
“`
在终端中运行 python app.py
,访问 http://127.0.0.1:5000/
,你将看到 “Hello, World!”。
二、路由和视图函数
@app.route('/')
是一个装饰器,它将 hello_world()
函数与 URL /
关联起来。当用户访问 /
时,Flask 会执行 hello_world()
函数并返回其结果。
你可以定义多个路由:
“`python
@app.route(‘/about’)
def about():
return ‘About page’
@app.route(‘/user/
def user_profile(username):
return f’User: {username}’
“`
<username>
是一个动态参数,它会捕获 URL 中的值并传递给 user_profile()
函数。访问 http://127.0.0.1:5000/user/john
将显示 “User: john”。
三、模板
使用模板可以将 HTML、CSS 和 JavaScript 代码与 Python 代码分离,提高代码的可维护性。Flask 默认使用 Jinja2 模板引擎。
在项目根目录下创建一个名为 templates
的文件夹,并在其中创建一个名为 index.html
的文件:
“`html
Hello, {{ name }}!
“`
修改 app.py
:
“`python
from flask import Flask, render_template
app = Flask(name)
@app.route(‘/’)
def index():
return render_template(‘index.html’, name=’World’)
“`
render_template()
函数会渲染 index.html
模板,并将 name
变量的值传递给模板。
四、静态文件
静态文件(如 CSS、JavaScript 和图片)应该放在 static
文件夹中。在 templates/index.html
中添加一个 CSS 链接:
html
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
url_for('static', filename='style.css')
会生成指向 static/style.css
的 URL。
五、请求和响应
Flask 提供了 request
对象来访问传入的请求数据,例如表单数据、查询参数和 Cookie。
“`python
from flask import Flask, request
@app.route(‘/login’, methods=[‘POST’])
def login():
username = request.form.get(‘username’)
password = request.form.get(‘password’)
# …
“`
response
对象用于构建响应。你可以设置响应状态码、Headers 和 Cookie。
“`python
from flask import Flask, make_response
@app.route(‘/cookie’)
def set_cookie():
response = make_response(‘Cookie set!’)
response.set_cookie(‘username’, ‘john’)
return response
“`
六、数据库
Flask 支持多种数据库,例如 SQLite、MySQL 和 PostgreSQL。可以使用 SQLAlchemy 或其他 ORM 库来简化数据库操作。
以 SQLAlchemy 为例:
“`python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(name)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///test.db’
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
# …
db.create_all()
“`
七、表单处理
WTForms 是一个流行的 Flask 扩展,用于处理表单数据。
“`python
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
username = StringField(‘Username’, validators=[DataRequired()])
password = PasswordField(‘Password’, validators=[DataRequired()])
submit = SubmitField(‘Login’)
“`
八、用户认证
Flask-Login 提供了用户认证功能。
九、测试
使用 unittest 或 pytest 编写测试用例,确保代码的质量。
十、部署
你可以将 Flask 应用程序部署到各种平台,例如 Heroku、AWS 和 Google Cloud。
十一、高级主题
- 蓝图:用于组织大型应用程序。
- 扩展:提供额外的功能,例如邮件发送和缓存。
- REST API:使用 Flask-RESTful 或 Marshmallow 构建 RESTful API。
- WebSocket:使用 Flask-SocketIO 实现实时通信。
本教程涵盖了 Flask 的基本概念和常用功能,希望能帮助你入门 Web 开发。学习 Flask 的最佳方式是实践,尝试构建自己的 Web 应用程序,并不断探索新的功能。 记住,持续学习和实践是掌握任何技术的关键。 随着你深入学习,你将发现 Flask 的强大和灵活性,并能够构建更复杂的 Web 应用程序。 祝你学习愉快!