目录
一、 简介
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的创建:
-
通过创建路由并关联函数,实现一个基本的网页:
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 应用,使其监听来自客户端的请求


4403

被折叠的 条评论
为什么被折叠?



