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 相关文章推荐
python实现问号表达式(?)的方法
Nov 27 Python
Python获取脚本所在目录的正确方法
Apr 15 Python
Python中多线程及程序锁浅析
Jan 21 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
PyQt5响应回车事件的方法
Jun 25 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
python 获取剪切板内容的两种方法
Nov 28 Python
python time.strptime格式化实例详解
Feb 03 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 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
php.ini中date.timezone设置分析
2011/07/29 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
Python Trie树实现字典排序
2014/03/28 Python
Python ldap实现登录实例代码
2016/09/30 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
如何用python整理附件
2018/05/13 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Python中的面向接口编程示例详解
2021/01/17 Python
学年自我鉴定
2014/01/16 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
学校政风行风整改方案
2014/10/25 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书