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 jieba分词模块的基本用法
Nov 09 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Python开发网站目录扫描器的实现
Feb 21 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
django 扩展user用户字段inlines方式
Mar 30 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
用Python提取PDF表格的方法
Apr 11 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
php模板原理讲解
2013/11/13 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
python pdb调试方法分享
2014/01/21 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
大学四年职业生涯规划书范文
2014/01/02 职场文书
小学清明节活动方案
2014/03/08 职场文书
入职担保书怎么写
2014/05/12 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
python中使用redis用法详解
2022/12/24 Redis
postgresql中如何执行sql文件
2023/05/08 PostgreSQL