Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统
2018-07-05 23:14
246 查看
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用
@app.route("/",methods=["GET","POST"])
为什么要这么用?其中的工作原理我们知道多少?
请关注跟DragonFire学Flask 之 路由系统 ,这里有你想要的答案
1. @app.route() 装饰器中的参数
如果不明白装饰器 点击这里
methods : 当前 url 地址,允许访问的请求方式
@app.route("/info", methods=["GET", "POST"]) def student_info(): stu_id = int(request.args["id"]) return f"Hello Old boy {stu_id}" # Python3.6的新特性 f"{变量名}"
endpoint : 反向url地址,默认为视图函数名 (url_for)
from flask import url_for @app.route("/info", methods=["GET", "POST"], endpoint="r_info") def student_info(): print(url_for("r_info")) # /info stu_id = int(request.args["id"]) return f"Hello Old boy {stu_id}" # Python3.6的新特性 f"{变量名}"
defaults : 视图函数的参数默认值{"nid":1}
from flask import url_for @app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100}) def student_info(nid): print(url_for("r_info")) # /info # stu_id = int(request.args["id"]) print(nid) # 100 return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}"
strict_slashes : url地址结尾符"/"的控制 False : 无论结尾 "/" 是否存在均可以访问 , True : 结尾必须不能是 "/"
# 访问地址 : /info @app.route("/info", strict_slashes=True) def student_info(): return "Hello Old boy info" # 访问地址 : /infos or /infos/ @app.route("/infos", strict_slashes=False) def student_infos(): return "Hello Old boy infos"
redirect_to : url地址重定向
# 访问地址 : /info 浏览器跳转至 /infos @app.route("/info", strict_slashes=True, redirect_to="/infos") def student_info(): return "Hello Old boy info" @app.route("/infos", strict_slashes=False) def student_infos(): return "Hello Old boy infos"
subdomain : 子域名前缀 subdomian="DragonFire" 这样写可以得到 DragonFire.oldboyedu.com 前提是app.config["SERVER_NAME"] = "oldboyedu.com"
app.config["SERVER_NAME"] = "oldboy.com" @app.route("/info",subdomain="DragonFire") def student_info(): return "Hello Old boy info" # 访问地址为: DragonFire.oldboy.com/info
关于路由目前就说这么多,之后的课程中会有关于Flask路由系统的源码剖析,再详细说明Flask路由系统的工作原理
2.动态参数路由:
from flask import url_for # 访问地址 : http://127.0.0.1:5000/info/1 @app.route("/info/<int:nid>", methods=["GET", "POST"], endpoint="r_info") def student_info(nid): print(url_for("r_info",nid=2)) # /info/2 return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}"
<int:nid> 就是在url后定义一个参数接收
但是这种动态参数路由,在url_for的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常
3.路由正则:
一般不用,如果有特殊需求,不怕麻烦的话,这个东西还是挺好用的,前提是你的正则玩儿的很6
相关文章推荐
- Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)
- Flask最强攻略 - 跟DragonFire学Flask - 第十篇 before_request after_request
- 源码解析flask的路由系统
- ASP.NET的路由系统:路由映射
- 工作流系统开发之二十三 图解工作流的基本路由方式
- [RHEL5系统管理攻略]--第1章 用户与组管理(2)
- flask框架路由url转换器用法
- centos系统攻略
- 黑客攻防:系统防入侵全攻略
- .NET/ASP.NET Routing路由(深入解析路由系统架构原理)
- [RHEL5系统管理攻略]--第3章 ext与swap文件系统(1)
- flask路由和视图和cookie
- WAYOS文件同步系统,可同时向N台路由同步公告、提醒、通知、授权、固件更新、配置同步等
- windows系统下,双网卡电脑更改默认路由的命令
- 基于WINCE.NET4.2系统的PDA使用PPC2003软件全攻略
- 华为U8818从系统android 4.06降级为android 2.3.6攻略
- Flask 中的路由与反向路由
- nagios全攻略(五)----监控windows系统的”本地信息” 推荐
- 菜鸟的win7+CentOs5.4双系统攻略,一份简单可行的双系统方案
- 网校系统搭建攻略