Flask Web框架的使用-路由

  • 一、前言
  • 二、路由
  • 1. 变量规则
  • 2.构造 URL
  • 3.HTTP 方法



一、前言

  • 个人主页: ζ小菜鸡
  • 大家好我是ζ小菜鸡,让我们一起来学习Flask Web框架的使用-路由。
  • 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)

二、路由

  客户端(如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行了那些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序称为路由。

  在Flask 程序中定义路由的最简便方式,是使用程序实例提供的app.route 修饰器,把修饰器的函数注册为路由。下面的例子说明了如何使用这个修饰器声明路由器:

@app.route("/")
def hello_world():
    return "Hello world!"

说明:
  修饰器是Python语言的标准特性,可以使用不同方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。

  但是,不仅如此!你可以构造含有动态部分的URL,也可以在一个函数上附着多个规则。


1. 变量规则

  要给URL添加变量部分,你可以把这些特殊的字段标记为<variable_name>,这部分将会作为命名参数传递到你的函数。规则可以用<converter.variable_name> 指定一个可选的转换器。

  示例:根据参数输出相应的信息
  创建02文件夹,在该文件夹下创建 add-params.py 文件,添加如下代码:

from flask import Flask  # 导入flask

app = Flask(__name__)  # 创建Flask对象


@app.route("/user/<username>")
def show_user_profile(username):
    # 显示该用户的用户信息
    return "User %s" % username


@app.route("/post/<int:post_id>")
def show_post(post_id):
    # 根据ID显示文章,ID是正型数据
    return "Post %d" % post_id


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

  上述代码中使用了转换器。它有下面几种:

  【1】int: 接收整数。

  【2】float: 同int,但是接收浮点数。

  【2】path: 和默认的相似,但也接收斜线。

  运行add-params.py ,在浏览器中将地址修改为“http://127.0.0.1:5000/user/小菜鸡”,显示效果,如下图所示:

Flask Web框架的使用-路由_服务器

  然后将地址修改为"http://127.0.0.1:5000/post/2",显示效果,如下图所示:

Flask Web框架的使用-路由_Web_02


2.构造 URL

  如果 Flask 能匹配 URL ,那么 Flask 可以生成它们吗?当然可以。你可以用url_for() 来给指定的函数构造 URL。它接受函数名作为第一个参数,也接受对应 URL 规则的变量部分的命名参数。未知变量部分会添加到 URL 末尾作为查询参数。

  示例:使用 url_for() 函数获取 URL 信息

  在示例“根据参数输出信息” 的基础上添加如下代码:

from flask import Flask, url_for  # 导入flask

app = Flask(__name__)  # 创建Flask对象

# 省略其余代码

@app.route("/url/")
def get_url():
    # 根据ID显示文章,ID是正型数据
    return url_for("show_post", post_id=2)


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

  运行上述代码,设置“/url/”路由,访问该路由时,返回“show_post” 函数信息。运行结果如下所示:

Flask Web框架的使用-路由_flask_03


3.HTTP 方法

  HTTP (与 Web应用会话的协议)有许多不同的访问URL方法。默认情况下,路由只回应 GET 请求,但是通过 route() 装饰器传递 methods 参数可以改变这个行为。例如:

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":     # 判断HTTP请求方式
        do_the_login()
    else:
        show_the_login_form()

  HTTP 方法(也经常被叫作“谓词”)告知服务器,客户端相对请求的页面做些什么。常见的方法,如下表所示:

方法名

说明

GET

浏览器告知服务器:只获取页面上的信息并发给我。这是最常用的方法。

HEAD

浏览器告诉服务器:欲获取信息,但是只关心消息头。应用应像处理GET请求一样来处理它,但是不分发实际内容。在 Flask中你完全无须人工干预,底层的Werkzeug 库已经替你处理好了。

POST

浏览器告诉服务器:想在URL上发布新信息。并且,服务器必须确保数据已存储且仅存储一次。这是HTMI表单通常发送数据到服务器的方法。

PUT

类似 POST,但是服务器可能触发了存储过程多次,多次覆盖掉旧值。你可能会问这有什么用?当然这是有原因的。考虑到传输中连接可能会丢失,在这种情况下浏览器和服务器之间的系统可能安全地第二次接收请求,而不破坏其他东西。因为POST它只触发次,所以用 POST 是不可能的。

DELETE

删除给定位置的信息。

OPTIONS

给客户端提供一个敏捷的途径来弄清这个URL支持哪些HTTP方法。从Flask0.6开始实现了自动处理。


  Flask Web框架的使用-路由,到此就结束了,感谢大家阅读,如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)