Flask框架学习笔记之路由和反向路由详解【图文与实例】


Posted in Python onAugust 12, 2019

本文实例讲述了Flask框架学习笔记之路由和反向路由。分享给大家供大家参考,具体如下:

#-*- coding:utf-8 -*-
from flask import Flask, request, url_for
app = Flask(__name__)
# 路由
@app.route("/")
# 视图函数
def index():
  return "<h1>Hello World!</h1>"
# 新的user路由
@app.route("/user", methods = ['POST'])
def hello_user():
  return "<h1>Hello User!</h1>"
# 动态路由。使用<>圈起来,输入网址时输入
@app.route("/users/<id>")
# 传入id参数
def user_id(id):
  return "<h1>Hello user: " + id
# 也可以不传参显示动态参数
@app.route("/query_user")
def query_user():
  id = request.args.get('id')
  return "query_user: " + id
# 反向路由,通过视图函数反导出url地址
@app.route("/query_url")
def query_url():
  return "query_url: " + url_for('query_user')
if __name__ == '__main__':
  app.run()

最基础的路由:@app.route('/'),也为根路由,程序运行后使用浏览器打开http://127.0.0.1:5000/即可访问。

# 路由
@app.route("/")
# 视图函数
def index():
  return "<h1>Hello World!</h1>"

Flask框架学习笔记之路由和反向路由详解【图文与实例】

视图函数就是被当前路由所修饰的函数,return返回html相关内容。

路由也可以修改当前的http方法来打开,flask路由默认的http方法是GET,这里使用methods=['POST']将http方法改为POST。

访问网页时要更改http方法:

# 新的user路由
@app.route("/user", methods = ['POST'])
def hello_user():
  return "<h1>Hello User!</h1>"

Flask框架学习笔记之路由和反向路由详解【图文与实例】

flask路由也可接受动态参数,动态参数需要使用<>包裹表示。

# 动态路由。使用<>圈起来,输入网址时输入
@app.route("/users/<id>")
# 传入id参数
def user_id(id):
  return "<h1>Hello user: " + id

Flask框架学习笔记之路由和反向路由详解【图文与实例】

需要在网址后输入任意合法的值来传入动态参数。

也可以使用request方法实现动态参数传递。

# 也可以不传参显示动态参数
@app.route("/query_user")
def query_user():
  id = request.args.get('id')
  return "query_user: " + id

Flask框架学习笔记之路由和反向路由详解【图文与实例】

输入网址时最后要加上?id=任意值,即可达到目的。

反路由通过视图函数表现出url地址,需使用url_for方法指向一个url。

# 反向路由,通过视图函数反导出url地址
@app.route("/query_url")
def query_url():
  return "query_url: " + url_for('query_user')

Flask框架学习笔记之路由和反向路由详解【图文与实例】

本质是根据函数名反向生成url,使用函数 url_for() 来针对一个特定的函数构建一个 URL。它能够接受函数名作为第一参数,以及一些关键字参数, 每一个关键字参数对应于 URL 规则的变量部分。未知变量部分被插入到 URL 中作为查询参数。

这里用到了chrome浏览器的一个postman插件,具体安装方法参考https://segmentfault.com/a/1190000008512891

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
Python3指定路径寻找符合匹配模式文件
May 22 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
对python3新增的byte类型详解
Dec 04 Python
一文了解Python并发编程的工程实现方法
May 31 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Python可以实现栈的结构吗
May 27 Python
python+playwright微软自动化工具的使用
Feb 02 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
python实现图片压缩代码实例
Aug 12 #Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 #Python
一行Python代码过滤标点符号等特殊字符
Aug 12 #Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 #Python
Django认证系统实现的web页面实现代码
Aug 12 #Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 #Python
django-filter和普通查询的例子
Aug 12 #Python
You might like
解决GD中文乱码问题
2007/02/14 PHP
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
完美的php分页类
2017/10/24 PHP
详解php反序列化
2020/06/10 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
iphone刘海屏页面适配方法
2019/05/07 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python登录豆瓣并发帖的方法
2015/07/08 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
通过实例了解python property属性
2019/11/01 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
小学教学随笔感言
2014/02/26 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
安全标语大全
2014/06/10 职场文书