百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

【Python】网络开发之高效Web 框架 - Flask 库

ccwgpt 2025-03-26 10:16 34 浏览 0 评论

Flask 简介

#python##python自学#

Flask 是一个轻量级的 Python Web 开发框架。它具有简单、灵活、易扩展的特点,适用于构建各种类型的小型和中型 Web 应用程序。

Flask 的核心思想是将 Web 开发过程中的各个部分进行分离,例如请求处理、URL 路由、模板渲染等,使得开发者能够更加专注于业务逻辑的实现。它提供了一系列工具和扩展,帮助开发者快速实现需求。

与其他 Web 框架相比,Flask 的优势在于它的简单性和灵活性,这使得它非常适合用于快速原型开发和小型 Web 应用的构建。它没有复杂的配置和约束,可以让开发者快速上手,并且具有良好的扩展性,可以根据需求添加各种插件和扩展。

总体而言,Flask 是一个非常优秀的 Web 开发框架,适用于各种场景,是快速构建 Web 应用的理想选择。

Flask 基本用法

Flask 的基本用法如下:
安装 Flask:在命令行或终端中执行以下命令,即可完成安装。

pip install Flask

创建 Flask 应用:在 Python 文件中导入 Flask 库,创建 Flask 应用对象,代码如下:

from flask import Flask

app = Flask(__name__)

定义路由:使用 Flask 的 route 装饰器定义请求 URL 和对应的处理函数,代码如下:

@app.route('/')
def index():
    return 'Hello, Flask!'
启动 Flask 应用:使用 Flask 应用对象的 run 方法启动 Flask 应用,代码如下:
python
Copy code
if __name__ == '__main__':
    app.run()

测试 Flask 应用:在浏览器中访问 http://localhost:5000,查看 Flask 应用的输出。
以上是 Flask 的基本用法,你可以通过编写代码实现更复杂的功能,例如处理表单数据、使用模板渲染页面、设置路由参数等

Flask 高级用法

Flask 高级用法包括:
模板渲染:Flask 使用 Jinja2 模板引擎进行模板渲染,可以动态生成 HTML 页面。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

在模板文件 index.html 中使用 Jinja2 语法,例如:




    Flask 高级用法 - 模板渲染


    

{{ title }}

{{ message }}

表单处理:Flask 支持处理 HTML 表单数据,例如:

from flask import Flask, request, render_template

app = Flask(__name__)

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

在模板文件 index.html 中创建 HTML 表单,例如:




    Flask 高级用法 - 表单处理


    

路由参数:Flask 可以在 URL 中包含参数,并在处理函数中获取参数值。

from flask import Flask

app = Flask(__name__)

@app.route('/user/')
def user(username):
    return 'Hello, {}!'.format(username)

在浏览器中访问
http://localhost:5000/user/flask,即可看到 "Hello, flask!" 的输出。

数据库:Flask 支持使用多种数据库,例如 SQLite、MySQL、PostgreSQL 等,可以使用 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)
    email = db.Column(db.String(120), unique=True, nullable=False)
    
    def __repr__(self):
        return '' % self.username
        
@app.route('/')
def index():
    user = User.query.first()
    return 'Hello, {}!'.format(user.username)

文件上传:Flask 支持文件上传,例如:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        file = request.files['file']
        file.save('uploads/' + file.filename)
        return '文件上传成功!'
    return render_template('index.html')

在模板文件 index.html 中创建 HTML 文件上传表单,例如:




    Flask 高级用法 - 文件上传


    

认证和授权:Flask 可以使用 Flask-Login 模块实现用户认证和授权功能。

from flask import Flask, redirect, url_for, request, render_template
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required

app = Flask(__name__)
app.secret_key = 'secret_key'

login_manager = LoginManager()
login_manager.init_app(app)

class User(UserMixin):
    def __init__(self, id):
        self.id = id
        self.username = 'user' + str(id)
        self.password = self.username + '_secret'
        
    def __repr__(self):
        return '' % self.username

users = [User(id) for id in range(1, 6)]

@login_manager.user_loader
def load_user(user_id):
    return users[int(user_id) - 1]

@app.route('/')
def index():
    return '首页'

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        for user in users:
            if user.username == username and user.password == password:
                login_user(user)
                return redirect(url_for('protected'))
        return '用户名或密码错误!'
    return render_template('login.html')

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

@app.route('/protected')
@login_required
def protected():
    return '登录成功!'

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

在上面的代码中,通过 login_manager.user_loader 装饰器为 Flask-Login 指定一个用户加载回调函数,在这个回调函数中,根据给定的用户 ID 返回一个用户对象。
通过 @login_required 装饰器保护了一些页面,要求登录后才能访问,否则会被重定向到登录页面。
如果你需要更多信息,请参阅 Flask-Login 官方文档

相关推荐

公司组织架构及部门职责#管理制度 #薪酬绩效 #组织架构

...

终于把“公司组织架构与管理部岗位配置”整理好了,拿来即用!

...

老板看完这份“公司组织架构详解”就解放了!

...

丨公司丨公司大架构整理汇总

注:本文转自团队成员原创作品,特此鸣谢(公号:法海图鉴)今日话题公司大架构整理背景介绍经过前几期话题对各种企业类型的介绍,想必大家已经有了初步认识。之后我将带着大家开启对公司的深入了解。本期...

图解物理--八年级物理下册最全知识框架导图

第七章力1力2弹力3重力第八章运动和力1牛顿第一定律2二力平衡3摩擦力第九章压强1压强2液体压强3大气压强4流体压强与流速的关系第十章浮力1浮力2阿基米德原理3物体的浮沉条件及应用第十一章功...

八年级上册生物,思维导图,期末高分必备资料,家长收藏

这是八年级上册生物的思维导图,孩子在背诵知识点的时候,可以看一下知识点在导图中的位置,形成对知识点整体的把握,有助于学生拿高分,特别是图片中带红色星星的部分,更是要注意背诵,是重点内容。家长可以把图片...

2019政府工作报告精华,这张思维导图里全都有

每经记者:李可愚每经编辑:陈星每日经济新闻

图解薪酬体系结构设计

...

司考复习独家总结!一张图总结行政法知识结构体系

作为三大实体法之一,行政法的分值在60分左右,行政法在司法考试中一直比较平稳常规,没有偏题怪题,还是比较容易得分的。小编要提醒大家,在3月之前要把三大实体法学习一遍。下图是厚大在线360导学师小周总结...

一图读懂香港国安新架构:各职位人选公布 有官员曾强硬喊话乱港分子

实用干货!高中物理框架图,让零碎知识“串联”起来

高中物理学习一定要抓好逻辑结构大框架!了解整个知识框架体系后,更易抓住骨干知识,干掉重难知识点~今天给大家分享高中物理的框架图同学们赶紧收藏起来吧!力学知识结构图光学知识结构图热学、原子物理知识结构图...

254m超高层办公楼型钢砼框架-核心筒结构图

高度类别:超高层建筑钢筋混凝土结构:框架,框架核心筒钢结构:钢框架建筑功能:办公包含:办公楼57层(-3层)254.150m钻孔灌注桩桩+筏板型钢混凝土框架-钢筋混凝土核心筒西裙房2层(-...

砖混结构与框架结构,究竟有何区别?千万别被坑!

现在买房装修的人最怕啥?不是价格高,而是房子不安全!两种主流建筑结构,砖混靠墙,框架靠柱子,选错了隔墙都可能要命。简单说,砖混便宜但别碰高层,框架贵点但能保命。砖混那些承重墙根本不能拆,想砸墙改个开放...

大师一百——高中化学必考:《元素周期律》考点框架图

今天大师给大家带来的是高中化学的《元素周期律》考点框架图,高中的同学必须牢记于心,这种重要的考点,考试是一定会考的!化学大师...

需求分析框架图

需求分析框架图

取消回复欢迎 发表评论: