python-Flask框架基础学习

本文介绍了Python的Flask框架,包括基本使用、路由、模板、请求与响应、配置、闪现、表单处理、蓝图、错误处理、请求钩子、中间件、Cookies和Sessions。Flask是一个轻量级的Web框架,依赖于jinja2模板和Werkzeug WSGI服务器。通过示例代码,展示了如何创建应用、处理路由、使用模板、管理请求和响应,以及设置和读取Cookies和Sessions。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flask简介

Flask是一个基于Python开发而且依赖jinja2模板和Werkzeug WSGI服务的一个微型Web框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,而后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,若是要返回给用户复杂的内容时,须要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

​ Flask被设计为易于使用,同时也提供了扩展性,用户可以自由地选择将其与哪些第三方库集成。Flask是"微"框架,这意味着其核心功能非常有限,但可以通过一系列的扩展来增强功能。

Flask基本使用

安装与使用示例

pip install flask

让我们来看一下如何创建一个简单的Flask应用。

from flask import Flask
app = Flask(__name__)

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

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

在这段代码中,我们首先导入Flask模块,并创建一个Flask web服务器实例。然后,我们定义了一个路由(route),即/。这个路由映射到一个函数hello_world,当用户访问这个URL时,它会返回’Hello, World!'字符串。

Flask路由

Flask通过提供装饰器app.route,使得定义路由变得简单易行。但你知道我们也可以通过app.add_url_rule方法直接添加路由吗?这种方式提供了更多的灵活性,例如,可以为路由添加不同的HTTP方法。

from flask import Flask

app = Flask(__name__)

# @app.route('/index')
def index():
    return 'hello'

# view_func必填
app.add_url_rule('/index', view_func=index)

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

在上述代码中,app.add_url_rule的第一个参数是URL规则,第二个参数是函数的别名,第三个参数是要映射的函数。

route参数

from flask import Flask

app = Flask(__name__)

"""
rule: 路由路径
methods: 请求方式
endpoint: 起别名, 用于反向解析. url_for('index')
strict_slashes: 设置路由是否为严格模式, True为严格模式, False为非严格模式, 默认为True
	如果关闭 /hello和/hi/都被视为有效的URL

"""
@app.route('/index', methods=["GET", "POST"], endpoint='index', strict_slashes=True)
def index():
    return "index"

# app.add_url_rule('/index', view_func=index)
"""
self.add_url_rule(rule, endpoint, f, **potion)参数以下

self: Flask类产生的对象(app)
rule: 路由
endpoint: 取别名, 若是为空, 用当前的函数名
methods: 请求方式
view_func: 取别名指向的函数(请求该路径, 要响应的函数)
"""

@app.route('/login')
def login():
    return "login"

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

路由装饰器

 # 装饰器函数
 def route(self, rule, **options):

        def decorator(f):
            endpoint = options.pop("endpoint", None)
            self.add_url_rule(rule, endpoint, f, **options)
            return f

        return decorator

# 被装饰函数
@app.route('/login',methods=['POST', "GET"], endpoint='index')
def login():
    return "hello world"

装饰器: 先执行装饰器, 运行里面的代码, 返回一个函数名
        而后加括号, 把装饰器装饰的函数当成参数传递给函数,
        返回一个被装饰器装饰的同名函数

路由跳转

from flask import Flask, url_for, redirect

app = Flask(__name__)

@app.route('/home', endpoint='home')
def home():
    return 'Hello World!'

@app.route('/index')
def index():
    # url_for函数用于建立URL的反向解析,它可以根据视图函数的名称生成对应的URL。
    # 使用url_for可以有效地避免硬编码URL地址,提高代码的可维护性
    return redirect(url_for('home'))

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


路由参数

from flask import Flask, jsonify

app = Flask(__name__)
app.debug = True

USERS = {
    1: {'name': '张三', 'age': 18, 'gender': '男', 'text': "道路千万条"},
    2: {'name': '李四', 'age': 28, 'gender': '男', 'text': "安全第一条"},
    3: {'name': '王五', 'age': 18, 'gender': '女', 'text': "行车不规范"},
}

@app.route('/detail/<int:nid>', methods=['GET'], endpoint='detail')
def detail(nid):
    print(nid, type(nid))
    return jsonify(USERS[nid])

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


Flask模板

Flask使用jinja2模板库。这个库非常强大,可以让你在HTML中嵌入Python代码。下面的例子展示了如何在Flask应用中使用模板:

# python
from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/hello')
def hello():
    name = '你好呀!'
    return render_template('hello.html', name=name)

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

render_template函数用于渲染一个模板。它接收模板的名称和一些模板变量作为参数,返回生成的HTML内容。在模板中,你可以使用{ { name }}来显示变量的值。

<!DOCTYPE html>
<html lang=&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值