【Python知识地图】Web开发基础:Flask框架

Flask 是一个轻量级的 Python Web 框架,适用于小型应用和快速原型开发。它的核心简单易用,但通过扩展可以实现非常强大的功能。本文将详细介绍 Flask 框架的基本用法及其主要功能,并提供一些示例代码。


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

本专栏介绍:本专栏为Python初学者和中高级开发者提供全面的学习资源。预计收录100篇文章,内容涵盖基础语法、数据结构、面向对象编程、Web开发、数据分析、机器学习等领域。每篇文章都经过精心编写,帮助你快速掌握Python编程技巧。无论初学者还是希望提升技能的开发者,这里都能找到适合你的资源。可点击专栏主页查看所有文章。

在这里插入图片描述

在这里插入图片描述

1. 安装 Flask

在使用 Flask 之前,需要先安装它。可以使用 pip 命令进行安装:

pip install flask

2. 创建 Flask 应用

2.1 基本应用

创建一个名为 app.py 的文件,并添加以下代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

2.2 运行应用

在命令行中运行以下命令启动 Flask 应用:

python app.py

默认情况下,应用将运行在 http://127.0.0.1:5000/

3. 路由和视图函数

3.1 定义路由

使用 @app.route 装饰器可以定义路由。路由用于将 URL 映射到视图函数。

@app.route('/')
def index():
    return 'This is the index page'

@app.route('/hello')
def hello():
    return 'Hello, Flask!'

3.2 路径参数

可以在路由中定义路径参数,并在视图函数中获取它们。

@app.route('/user/<username>')
def show_user_profile(username):
    return f'User {username}'

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f'Post {post_id}'

4. 模板渲染

Flask 使用 Jinja2 模板引擎进行模板渲染。

4.1 创建模板

在项目目录中创建一个名为 templates 的文件夹,并在其中创建一个名为 index.html 的文件:

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ heading }}</h1>
    <p>{{ message }}</p>
</body>
</html>

4.2 渲染模板

使用 render_template 函数渲染模板,并传递上下文变量。

from flask import render_template

@app.route('/')
def index():
    return render_template('index.html', title='Welcome', heading='Hello, Flask!', message='This is a basic Flask application.')

5. 表单处理

5.1 创建表单

templates 文件夹中创建一个名为 form.html 的文件:

<!DOCTYPE html>
<html>
<head>
    <title>Form Example</title>
</head>
<body>
    <h1>Form Example</h1>
    <form method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name">
        <input type="submit" value="Submit">
    </form>
</body>
</html>

5.2 处理表单数据

使用 request 对象获取表单数据。

from flask import request

@app.route('/form', methods=['GET', 'POST'])
def form():
    if request.method == 'POST':
        name = request.form['name']
        return f'Hello, {name}!'
    return render_template('form.html')

6. 重定向和 URL 生成

6.1 重定向

使用 redirect 函数进行重定向。

from flask import redirect

@app.route('/redirect')
def redirect_example():
    return redirect('/')

6.2 URL 生成

使用 url_for 函数生成 URL。

from flask import url_for

@app.route('/url_for_example')
def url_for_example():
    return url_for('index')

7. 静态文件

7.1 访问静态文件

在项目目录中创建一个名为 static 的文件夹,并将静态文件(如 CSS、JavaScript、图像等)放置其中。可以使用 /static/ 路径访问这些文件。

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">

8. 数据库操作

8.1 使用 SQLite 和 SQLAlchemy

安装 Flask-SQLAlchemy 扩展:

pip install flask-sqlalchemy

8.2 配置数据库

app.py 中配置数据库连接:

from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

8.3 定义模型

定义数据库模型:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

8.4 创建数据库表

在 Flask shell 中创建数据库表:

flask shell
from app import db
db.create_all()

8.5 插入、查询和删除数据

插入数据:

user = User(username='alice', email='alice@example.com')
db.session.add(user)
db.session.commit()

查询数据:

users = User.query.all()
print(users)

删除数据:

user = User.query.filter_by(username='alice').first()
db.session.delete(user)
db.session.commit()

9. 用户认证

9.1 安装 Flask-Login

安装 Flask-Login 扩展:

pip install flask-login

9.2 配置 Flask-Login

app.py 中配置 Flask-Login:

from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

9.3 登录和注销

定义登录和注销视图:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        user = User.query.filter_by(username=username).first()
        if user and user.password == password:
            login_user(user)
            return redirect(url_for('index'))
    return render_template('login.html')

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('index'))

9.4 保护视图

使用 @login_required 装饰器保护视图:

@app.route('/protected')
@login_required
def protected():
    return f'Hello, {current_user.username}!'

10. 部署 Flask 应用

10.1 使用 WSGI 服务器

安装 gunicorn

pip install gunicorn

10.2 启动应用

在命令行中运行以下命令启动 Flask 应用:

gunicorn -w 4 -b 127.0.0.1:8000 app:app

参数说明:

  • -w 4:启动 4 个工作进程
  • -b 127.0.0.1:8000:绑定地址和端口

总结

Flask 是一个轻量级的 Python Web 框架,适用于小型应用和快速原型开发。通过 Flask,可以方便地定义路由和视图函数、处理表单数据、渲染模板、操作数据库、实现用户认证等。本文详细介绍了 Flask 框架的基本用法及其主要功能,并提供了一些示例代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值