flask框架基础入门学习教程
文章目录
前言
Flask 是一个轻量级的 Python Web 框架,它简单易用,适合初学者和快速开发小型 Web 应用。以下是一份较为全面的 Flask 框架教程:
1. 环境搭建
1.1Python安装
访问 Python 官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载并安装 Python 3.x 版本。安装时勾选 “Add Python to PATH”,方便在命令行中使用 Python。
Python 3.11安装教程:https://blog.csdn.net/u014164303/article/details/145549489
Python 3.13安装教程:https://blog.csdn.net/u014164303/article/details/146024500
Python 3.11下载地址:https://pan.quark.cn/s/9c44793cb24c
Python 3.13下载地址:https://pan.quark.cn/s/bce37ebd7f70
1.2选择Python开发环境
PyCharm 社区版(免费)或专业版(需付费或申请教育版)。安装完成后,打开 PyCharm,创建一个新的项目,在项目设置中选择之前创建的虚拟环境作为项目的 Python 解释器。PyCharm 功能强大,提供代码自动补全、调试等功能,适合开发大型项目。
Pycharm安装教程:https://blog.csdn.net/u014164303/article/details/145674773
PyCharm下载地址:https://pan.quark.cn/s/5756c8cf8b2a
1.3 创建虚拟环境(可选但推荐)
虚拟环境可以隔离不同项目的依赖,避免版本冲突。在命令行中执行以下操作:
# 创建虚拟环境
python -m venv myenv
# 激活虚拟环境(Windows)
myenv\Scripts\activate
# 激活虚拟环境(Linux/Mac)
source myenv/bin/activate
1.4 安装 Flask
在激活的虚拟环境中,使用 pip 安装 Flask:
bash
pip install flask
2. 第一个 Flask 应用
创建一个名为 app.py 的文件,编写以下代码:
from flask import Flask
# 创建 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!。
3. 路由和视图函数
3.1 基本路由
Flask 使用 @app.route() 装饰器来定义路由,将 URL 与视图函数关联起来。
@app.route('/about')
def about():
return 'This is the about page.'
访问 http://127.0.0.1:5000/about 即可看到相应的页面内容。
3.2 动态路由
可以在路由中使用变量,通过 <variable_name> 的形式定义,视图函数可以接收该变量作为参数。
@app.route('/user/<username>')
def show_user_profile(username):
return f'User: {username}'
访问 http://127.0.0.1:5000/user/John,页面将显示 User: John。
3.3 路由参数类型
可以指定变量的类型,如 int、float 等。
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post ID: {post_id}'
访问 http://127.0.0.1:5000/post/123,页面将显示 Post ID: 123。
4. 请求和响应
4.1 获取请求数据
Flask 使用 request 对象来处理请求数据,如表单数据、查询参数等。
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
return f'Username: {username}, Password: {password}'
return '''
<form method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Login">
</form>
'''
4.2 响应对象
可以使用 make_response() 函数创建自定义响应对象,设置响应头、状态码等。
from flask import make_response
@app.route('/custom_response')
def custom_response():
resp = make_response('This is a custom response')
resp.headers['Content-Type'] = 'text/plain'
resp.status_code = 201
return resp
5. 模板渲染
Flask 使用 Jinja2 模板引擎来渲染 HTML 页面。创建一个名为 templates 的文件夹,在其中创建一个 index.html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home Page</title>
</head>
<body>
<h1>Welcome to the Home Page!</h1>
<p>Message: {{ message }}</p>
</body>
</html>
在 app.py 中使用 render_template() 函数渲染模板:
from flask import render_template
@app.route('/home')
def home():
message = 'Hello from the server!'
return render_template('index.html', message=message)
6. 静态文件处理
创建一个名为 static 的文件夹,用于存放静态文件,如 CSS、JavaScript 和图片等。在 HTML 模板中引用静态文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home Page</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<h1>Welcome to the Home Page!</h1>
</body>
</html>
7. 会话管理
Flask 使用 session 对象来管理用户会话。需要设置一个会话密钥:
from flask import session
app.secret_key = 'your_secret_key'
@app.route('/set_session')
def set_session():
session['username'] = 'John'
return 'Session set'
@app.route('/get_session')
def get_session():
username = session.get('username')
if username:
return f'Username: {username}'
return 'No session data'
8. 错误处理
可以使用 @app.errorhandler() 装饰器来处理特定的错误。
@app.errorhandler(404)
def page_not_found(error):
return 'Page not found', 404
9. 数据库集成
Flask 可以与多种数据库集成,如 SQLite、MySQL、PostgreSQL 等。以 SQLite 为例,使用 Flask - SQLAlchemy 进行数据库操作:
pip install flask-sqlalchemy
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)
def __repr__(self):
return '<User %r>' % self.username
@app.before_first_request
def create_tables():
db.create_all()
@app.route('/add_user/<username>')
def add_user(username):
new_user = User(username=username)
db.session.add(new_user)
db.session.commit()
return f'User {username} added'
if __name__ == '__main__':
app.run(debug=True)
10. 部署
- 开发完成后,可以将 Flask 应用部署到生产环境,常见的部署方式有:
- WSGI 服务器:如 Gunicorn(适用于 Linux)、uWSGI 等。
- 云平台:如 Heroku、阿里云、腾讯云等。
通过以上步骤,你可以逐步掌握 Flask 框架的基本使用,开发出功能丰富的 Web 应用。
浙公网安备 33010602011771号