Python面试题--第75道题目--静态路由和动态路由的区别,如何在Flask中如何实现动态路由--2022年04月30日

目录

一、静态路由和动态路由的区别:

静态路由:path与路由函数一一对应

动态路由:多个path与同一个路由函数对应

二、实例操作代码演示:


一、静态路由和动态路由的区别:

路由:相当于导航,url path

静态路由:path与路由函数一一对应

动态路由:多个path与同一个路由函数对应

不管访问哪一个url,都会执行同一个服务端的路由函数。

二、实例操作代码演示:

第一部分:

初始化:所有的Flask都必须创建程序实例,

web服务器使用wsgi协议,把客户端所有的请求都转发给这个程序实例

程序实例是Flask的对象,一般情况下用如下方法实例化:

Flask类只有一个必须指定的参数,即程序主模块或者包的名字,__name__是系统变量,该变量指的是本py文件的文件名。

from flask import Flask
app = Flask('__name__')

第二部分:

路由和视图函数:

客户端发送url给web服务器,web服务器将url转发给flask程序实例,程序实例需要知道对于每一个url请求启动那一部分代码,所以保存了一个url和python函数的映射关系。

处理url和函数之间关系的程序,称为路由。

在flask中,定义路由最简便的方式,是使用程序实例的app.route装饰器,把装饰的函数注册为路由。

# 静态路由
@app.route('/')
def index():
    return '<h1>root</h1>'

@app.route('/greet')
def greet():
    return '<h>hello everyone</h>'

@app.route('/greet/bill')
def greet_bill():
    return '<a>你好 bill</a>'

# 动态路由
@app.route('/greet/<name>')
def arg1(name):
    return '<t>hello {}</t>'.format(name)

@app.route('/greet/<name1>/<name2>/<name3>')
def arg2(name1,name2,name3):
    return '<h>{}-{}-{}</h>'.format(name1,name2,name3)

@app.route('/greet/<a1>-<a2>-<a3>')
def arg3(a1,a2,a3):
    return '<h>{}*{}*{}</h>'.format(a1,a2,a3)

第三部分:

程序实例用run方法启动flask集成的开发web服务器

__name__ == '__main__'是python常用的方法,表示只有直接启动本脚本时候,才用app.run方法

如果是其他脚本调用本脚本,程序假定父级脚本会启用不同的服务器,因此不用执行app.run()

服务器启动后,会启动轮询,等待并处理请求。轮询会一直请求,直到程序停止。

if __name__ =='__main__':
    app.run()
  • 如上述代码所示,app是flask的实例,功能就是接受来自web服务器的请求
  1. 浏览器将请求给web服务器,web服务器将请求给app ,
  2. app收到请求,通过路由找到对应的视图函数,然后将请求处理,得到一个响应response
  3. 然后app将响应返回给web服务器,
  4. web服务器返回给浏览器,
  5. 浏览器展示给用户观看,流程完毕。

执行结果:

执行本脚本以后,会出现访问地址,是本机地址,端口号为:5000

将网址复制到浏览器中,访问既可。

 

 

动态路由的效果。

 

 

 

 程序也会记录访问那些地址和访问时间:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值