黄色标注部分重点注意

1. URL与函数的映射

•一个URL要与执行函数进行映射,使用的是@app.route装饰器。
       •@app.route装饰器中,可以指定URL的规则来进行更加详细的映射,如果现在要映射一个文章篇数的URL,文章篇数的URL是/article/number/,number有可能为1、2、3…,那么可以通过以下方式来映射:

@app.route('/article/<number>')
def article(number):return '这是我的第{}篇文章'.format(number)

•上述其中,尖括号是固定语法不可改变,表示路由地址中传入的参数,默认的数据类型是字符串。如果需要限制参数类型,则要写成限制类型:变量名,限制类型包括以下几种:

string 默认的数据类型,接受任何没有斜杠 / 的字符串。
int 整型
float 浮点型
path 和string作用类似,但是可以传递斜杠 /
uuid uuid类型的字符串
any 可以指定多条路路径
路由映射测试:
from flask import Flaskapp = Flask(__name__)# 装饰器,将当前路由映射到指定函数
@app.route('/ycx')
def first_flask():return '但行好事,莫问前程'if __name__ == '__main__':app.run(debug=True)
网页显示:

•我们在浏览器中输入http://127.0.0.1:5000/ycx即可访问到以下页面:


       •同时我们还可以动态传入参数,并指定参数类型

from flask import Flaskapp = Flask(__name__)# 装饰器,将当前路由映射到指定函数
@app.route('/ycx')
def first_flask():return '但行好事,莫问前程'@app.route('/article/<int:number>') #规定数据类型为int
def article(number):return '这是我的第{}篇文章'.format(number)if __name__ == '__main__':app.run(debug=True)
网页显示:

显然,此时参数只能是整型数字了不能是其它数据类型

•一般情况下参数中不能包含 /, 如果要包含 /,必须将数据类型限制为path类型,除此区别之外,path类型与string类型使用基本一样

如下测试:
from flask import Flaskapp = Flask(__name__)# 装饰器,将当前路由映射到指定函数
@app.route('/ycx')
def first_flask():return '但行好事,莫问前程'@app.route('/article/<int:number>')
def article(number):return '这是我的第{}篇文章'.format(number)@app.route('/comment/<path:aid>') #path类型可用string 和 /
def comment_list(aid):return '这是我的第{}个评论'.format(aid)if __name__ == '__main__':app.run(debug=True)
网页显示:

如果为字符串类型或者参数中含有 / 时,则匹配comment_list(aid)函数

•两个路由访问同一个函数可以用any类型来限制

如下测试:
from flask import Flaskapp = Flask(__name__)# 装饰器,将当前路由映射到指定函数
@app.route('/ycx')
def first_flask():return '但行好事,莫问前程'@app.route('/article/<int:number>')
def article(number):return '这是我的第{}篇文章'.format(number)@app.route('/comment/<path:aid>')
def comment_list(aid):return '这是我的第{}个评论'.format(aid)@app.route('/<any(list,dict):url_path>/')
def message(url_path):if url_path == 'list':return '当前路由是list'else:return '当前路由是dict'if __name__ == '__main__':app.run(debug=True)
网页显示:

此时访问路由时需要在路径最后添加 / 才能正常访问,如/<any(list,dict):url_path>/

•如果不想通过指定子路径来传递参数,也可以通过 ?=的形式来传递参数,例如:/article?id=xxx这种情况下,可以通过request.args.get(‘id’)来获取id的值
       •如果是post方法,则需要通过request.form.get(‘id’)来进行获取id的值。
       •如果需要在flask中使用上述方法,需先导入request库 from flask import request

如下测试:
from flask import Flask, requestapp = Flask(__name__)# 装饰器,将当前路由映射到指定函数
@app.route('/ycx')
def first_flask():return '但行好事,莫问前程'@app.route('/article/<int:number>')
def article(number):return '这是我的第{}篇文章'.format(number)@app.route('/comment/<path:aid>')
def comment_list(aid):return '这是我的第{}个评论'.format(aid)@app.route('/<any(list,dict):url_path>/')
def message(url_path):if url_path == 'list':return '当前路由是list'else:return '当前路由是dict'@app.route('/cx')
def search():return request.args.get('name')if __name__ == '__main__':app.run(debug=True)
网页显示:

request.args.get()中传入的参数未在URL中传入,会出现报错,因为URL未传入name参数,所以request.args.get()方法的值为空,即视图函数search()返回的值为空,不能渲染,所以会出现报错
网页显示:

有问题可以在评论指正,欢迎讨论,谢谢大家!!

我爱Flask之URL和Flask视图介绍相关推荐

  1. 我爱Flask框架之Flask简介与URL和视图介绍

    一:虚拟环境介绍 黄色部分重点注意 虚拟环境与全局环境: 我们通过pip安装了一个python库,可能在编辑器中不能使用(如:pycharm,vscode-)这是因为: 通过pip安装的库默认一般安装 ...

  2. flask(一)之路由和视图

    01-介绍 Flask 是一个 Python 实现的 Web 开发微框架,同时具有很强的扩展能力. 02-第一个flask程序 # 初始化from flask import Flask, url_fo ...

  3. Flask唯一URL规则--@app.route('/', endpoint='1')

    Flask的URL规则基于werkzeug的路由模块, 用来保证URL的唯一性. 例如带斜线: @app.route('/example/') def example():return 'ok' 如果 ...

  4. Flask学习之旅——3 视图高级

    Flask学习之旅--3 视图高级 前言 本文为<知了传课-- 视图高级>的学习笔记. 蓝图 为什么使用蓝图? 当项目比较大或者代码比较多的时候,让所有的url和视图函数放在同一个文件夹里 ...

  5. Flask入门学习---Hello,Flask!

    实例程序在helloflask/demos/hello目录下 1.最小的Flask程序 在hello目录下的app.py脚本中包含了一个最小的Flask程序. from flask import Fl ...

  6. 一、flask的基本使用-flask

    一.简介: Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug  WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进 ...

  7. 快速上手Flask(一) 认识框架Flask、项目结构、开发环境

    文章目录 快速上手Flask(一) 认识框架Flask.项目结构.开发环境 Web开发轻量级框架Flask Flash历史和团队 Pallets 项目 flask运行过程 使用flask的场景 使用P ...

  8. Flask从入门到放弃(介绍、模版语法案例、配置文件、路由本质、CBV整体流程)

    文章目录 一.Flask介绍 二.Flask快速使用 三.Flask展示用户信息案例 四.Flask配置文件 五.路由系统 1)路由系统 2)路由本质 3)Add_url_rule的参数 六.Flas ...

  9. flask html 模板继承,Flask框架模板继承实现方法分析

    Flask框架模板继承实现方法分析 本文实例讲述了Flask框架模板继承实现方法.分享给大家供大家参考,具体如下: 在模板中,可能会遇到以下情况: 多个模板具有完全相同的顶部和底部内容 多个模板中具有 ...

最新文章

  1. Ember.js 入门指南——查询记录
  2. hive practice 1
  3. “互联网+”谋定文物市场-国情讲坛·宗佩山:构建共享平台
  4. php设计分布图,MySQL分表实现上百万上千万记录分布存储的批量查询设计模式[图]_MySQL...
  5. 从零开始学习docker(三)link
  6. 人生苦短我学python表情包_Python自动生成表情包
  7. 坚持打造最好的日期控件,My97 DatePicker 4.8 Beta3
  8. 移动对meta的定义(转)
  9. 软件工程习题2第三小题
  10. 集算器(仓库版)发布,黑科技获得用户好评
  11. 解决visio图片生成PDF有留白的问题
  12. mq 的Publish/Subscribe 模式
  13. 图卷积网络GRAPH CONVOLUTIONAL NETWORKS
  14. Windows安全日志
  15. 美国银行账户里的美元(目前大概每月有五六万),有什么更好的办法转到国内的人民币账户上?
  16. Nat. Commun. | 可多层次预测多肽-蛋白质相互作用的深度学习框架
  17. Transformer——patch embedding代码
  18. 【计量经济学导论】04. 多重共线性
  19. 自组织竞争网络(SOM)
  20. SpringBoot定时任务简单应用

热门文章

  1. linux通过网线连路由器上网
  2. 用智能指针实行所有权
  3. 51单片机74ls273并行输出地址c语言程序,51单片机I/O口的扩展问题:使用 锁存器74LS273连接后还是只有8个端口,为什么说是扩展呢?...
  4. 数据中台是什么,不是什么,就这么拨乱反正吧 by 傅一平
  5. WebRTC重要API和音视频分析
  6. No Such Property: Scope For Class: Com.android.build.gradle.internal.variant.ApplicationVariantData
  7. python夯实基础日记-for循环、优化技巧、函数
  8. 23种设计模式——工厂模式+适配器模式实战
  9. html5点赞仿抖音,仿抖音之——点赞动画
  10. JZOJ5677. 【GDOI2018Day2模拟4.21】纽约