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 应用。

posted on 2025-03-01 14:06  小学生学IT  阅读(204)  评论(0)    收藏  举报  来源

导航