详细了解Flask框架的入门

目录

一、 简介

二、 概要

三、 知识点

1. Flask基础

1)路由route的创建:

2)endpoint的作用

3)request对象的使用

4)请求钩子before/after_request

5)redirect重定向

临时重定向(302)与永久重定向(301)的区别:

6)返回json数据给前端

7)abort函数的使用

8)url_for实现反转

? ?四、总结? ? ?

对于钩子的补充


一、 简介

Flask 是一个以微核心设计为基础的轻量级 Web 应用框架,它提供了 Web 开发的基础功能,如路由、请求处理和响应构建。这种设计哲学使得 Flask 既简单直观,易于新手上手,又足够灵活,能够满足经验丰富的开发者的需求。开发者可以根据自己的项目需求,选择性地添加各种 Flask 扩展,实现如数据库集成、表单验证等额外功能。

二、 概要

1)安装:Flask 可以通过 Python 的包管理工具 pip 轻松安装,安装命令为

pip install flask

这一步骤是开始使用 Flask 的第一步,确保了开发环境中包含了 Flask 框架及其依赖。

2)组成:Flask 作为一个 WSGI(Web Server Gateway Interface)应用,它的核心组件包括一个开发服务器、调试器和路由系统。这些组件共同构成了 Flask 的基础架构,使得开发者可以快速搭建起一个 Web 应用。

3)模板引擎:Flask 使用 Jinja2 作为其默认的模板引擎,Jinja2 是一个功能强大的模板语言,由 Flask 核心开发者维护,它支持变量替换、循环、条件判断等模板特性,极大地简化了 Web 页面的渲染过程。

4)使用装饰器:Flask 广泛使用 Python 的装饰器模式,这些以 @ 开头的装饰器方法允许开发者以一种非常 Pythonic 的方式扩展或修改函数的行为。在 Flask 中,装饰器被用于路由定义、请求处理、权限验证等多种场景,是 Flask 框架中不可或缺的一部分。

三、 知识点
1. Flask基础
1)路由route的创建:

route装饰器详解

  • 通过创建路由并关联函数,实现一个基本的网页:

    from flask import Flask
    #导入 Flask 类:首先,代码从 flask 模块导入 Flask 类。
    
    app = Flask(__name__)
    #创建 Flask 实例:通过 Flask(__name__) 创建一个 Flask 应用实例。这里的 __name__ 是一个 Python 特殊变量,它代表了当前脚本的名称。Flask 用它来找到资源文件和确定应用程序的根目录。
    
    @app.route("/")
    #路由和视图函数:在 Flask 中,路由是将 URL 映射到 Python 函数的过程。@app.route("/") 是一个装饰器,它告诉 Flask 哪个 URL 应该触发哪个函数。在这个例子中,当用户访问应用的根 URL(即网站的首页,通常是 http://localhost:5000/)时,会调用 index 函数。(url 指的是统一资源定位符(Uniform Resource Locator),它是互联网上用来标识资源位置的地址。在 Web 应用中,每个 url 都对应一个特定的页面或资源,浏览器通过向服务器发送请求来获取这些资源。)
    
    def index():
        return "Hello World!"
    #定义视图函数:index 函数是一个视图函数,它的作用是返回响应给客户端的内容。在这个例子中,当用户访问根 URL 时,index 函数返回字符串 "Hello World!"。
    
    # def not():
    #     return "Not Hello World!"
    #not 函数被注释掉了,这意味着它不会被执行。如果取消注释,它将定义另一个路由,但在这个例子中,我们只关联 index 函数。
    
    app.run()
    #启动开发服务器:app.run() 启动 Flask 内置的开发服务器。这个服务器仅用于开发和测试目的,不适用于生产环境。当调用 app.run() 时,服务器会监听来自浏览器的请求,并根据路由规则将请求映射到相应的视图函数。
    

选择使用哪种类型的重定向取决于你的具体需求。如果你只是想临时改变资源的位置,使用 302;如果你已经决定永久移动资源,使用 301。

6)返回json数据给前端

在 Flask 中,返回 JSON 数据给前端是一种常见的做法,用于在服务器和客户端之间传输数据。Flask 提供了jsonify()函数,它可以将 Python 字典转换为 JSON 格式的响应。

  • 通过路由的methods指定url允许的请求格式:

    在 Flask 中,methods 参数用于指定一个路由可以响应哪些类型的 HTTP 请求方法。HTTP 请求方法包括但不限于 GET、POST、PUT、DELETE 等,每种方法都有其特定的用途:

    GET 方法通常用于请求服务器发送资源。

    POST 方法通常用于向服务器提交要被处理的数据。

    PUT 方法通常用于更新服务器上的现有资源。

    DELETE 方法通常用于删除服务器上的资源。

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/hello",methods=['GET','POST'])
    def hello():
        return "Hello World!"
    #第一个路由 /hello:
    #路径:/hello
    #允许的请求方法:['GET', 'POST']
    #视图函数:hello,当访问 /hello 路径时,无论是 GET 还是 POST 请求,都会调用这个函数,并返回 "Hello World!"。
    #methods参数用于指定允许的请求格式
    #常规输入url的访问就是get方法
    
    @app.route("/hi",methods=['POST'])
    def hi():
        return "Hi World!"
    #注意路由路径不要重名,映射的视图函数也不要重名
    #第二个路由 /hi:
    #路径:/hi
    #允许的请求方法:['POST']
    #视图函数:hi,这个路由只响应 POST 请求,当有 POST 请求访问 /hi 路径时,调用 hi 函数,并返回 "Hi World!"。
    
    app.run()
    
  • 通过路由在url内添加参数,其关联的函数可以接收该参数: 动态路由:在 Flask 中,可以在路由的 URL 模式中使用尖括号 <…> 来定义动态路由。尖括号内的名称会成为视图函数的参数。 类型转换器:Flask 允许你在尖括号内指定类型转换器,这样 URL 中的参数就会被自动转换为相应的类型。例如,int:id 表示 id 参数应该是一个整数。Flask 内置了几种类型转换器,如 string(默认,接受任何不包含斜杠的文本)、int(接受正整数)、float(接受正浮点数)、path(接受包含斜杠的文本)等。

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/index/<int:id>",)
    #定义视图函数:index 函数是一个视图函数,它接收一个名为 id 的参数。这个参数来自于 URL 中的动态部分,并且由于使用了 int 转换器,它会被自动转换为整数类型。
    
    def index(id):
        if id == 1:
            return 'first'
        elif id == 2:
            return 'second'
        elif id == 3:
            return 'thrid'
        else:
            return 'hello world!'
    #条件判断:在 index 函数内部,根据 id 参数的值进行条件判断,返回不同的字符串。例如,如果 id 等于 1,返回 'first';如果 id 等于 2,返回 'second';如果 id 等于 3,返回 'thrid';其他情况返回 'hello world!'。
    
    if __name__=='__main__':
        app.run()
    ##启动应用:if __name__ == '__main__': 这一行检查当前脚本是否作为主程序运行。如果是,执行 app.run() 启动 Flask 应用,使其监听来自客户端的请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值