Flask - 路由系统

最简单用法:

@app.route("/",methods=["GET","POST"])

下面介绍但是还有其他参数和用法

@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 : 301永久重定向 在进入视图函数之前进行跳转

# 访问地址 : /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

动态参数路由

@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的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常

如果正则玩的好, 还可以用正则匹配

最新文章

  1. (七)C语言中的void 和void 指针类型
  2. python 接口开发(一)
  3. 慕课网-安卓工程师初养成-4-2 Java条件语句之 if...else
  4. BITED数学建模七日谈之七:临近比赛时的准备工作
  5. gulpfile的结构
  6. POP动画引擎中Layer与CALayer的一点区别
  7. PS 滤镜算法原理 ——马赛克
  8. 黑马程序员:Java基础总结----GUI图形化界面
  9. iOS回顾笔记( 01 )
  10. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试
  11. Maximum Subarray(最大子数组)
  12. golang中使用ETCD
  13. WPF程序 双击exe自动申请“以管理员方式运行”权限
  14. Python进阶量化交易场外篇5——标记A股市场涨跌周期
  15. java代码示例(4)
  16. Mysql 函数使用记录(一)——DATEDIFF、CONCAT
  17. spark dataframe操作集锦(提取前几行,合并,入库等)
  18. trunc()用法和add_months()
  19. mfc Radio Buttons
  20. 【Socket】linux下http服务器开发

热门文章

  1. Git下的冲突解决【转】
  2. [Swift通天遁地]四、网络和线程-(15)程序内购功能
  3. ashx 文件的使用
  4. 【NOIP练习赛】学习
  5. .Net application,Session,Cache简单比较
  6. semantic、vue 使用分页组件和日历插件
  7. body全屏css/网页全屏设置/全屏样式
  8. Windows10开启热点
  9. Canvas——基本入门
  10. html5——web字体