Flask初级(九)flash与前台交互get详解
Project name :Flask_Plan
templates:templates
static:static
@app.route('/')
def hello_world():
return 'index default'
直接get访问域名 http://127.0.0.1:5000
@app.route('/view_plan/')
def view_plan():
return render_template('plan.html') # 此行修改
get访问子目录 http://127.0.0.1:5000/view_plan
@app.route('/view_date/<date>') # 增加<date>
def view_date(date): # 把date传入显示函数
print(date)
return render_template('plan.html')
get访问子目录,带参数 http://127.0.0.1:5000/view_date/20171212
后台会打印20171212
曾经让我冥思苦想2天的一个问题是:
上面3个路由和视图函数都写好了
http://127.0.0.1:5000/view_date/20171212
http://127.0.0.1:5000/view_plan
可以正常访问
http://127.0.0.1:5000/view_plan/20121212
http://127.0.0.1:5000/view_date/
直接404错误
如何使404错误的可以正常访问呢?
使用request。
from flask import Flask, render_template ,request
首先引入request
@app.route('/view_plan/')
def view_plan():
date = request.args.get('date')
print(date)
return render_template('plan.html') # 此行修改
# 历史计划的查询,输入日期,即可显示历史日期的计划
@app.route('/view_date/') # 增加<date>
def view_date(): # 把date传入显示函数
date = request.args.get('date')
print(date)
return render_template('plan.html') # 此行修改
然后修改视图函数。
访问的时候这样:
http://127.0.0.1:5000/view_plan/
http://127.0.0.1:5000/view_date/
都是正常访问。
http://127.0.0.1:5000/view_plan/?date=20171212
http://127.0.0.1:5000/view_date/?date=20171212
也可以正常访问了。多个参数可以用&连起来
http://127.0.0.1:5000/view_date/?date=20171212&carriage=552828
后台:
request.args.get(date)
request.args.get(carriage)
这样的地址看起来就像是动态地址。
想使用静态地址方式的方法有以下两种:
一:建立两条路由,视图函数引用。
@app.route('/hello/')
def hello(name='jack'):
return 'hello %s'%name
@app.route('/hello/<name>')
def helloname(name):
return hello(name)
访问 http://domain.com/hello 则使用视图函数hello,并将name设一个默认值jack
访问 http://domain.com/hello/rose 则使用视图函数 helloname,实际是使用hello函数
一:使用路由的default参数:
@app.route('/', defaults={'name': 'jack'})
@app.route('/<name>')
def hello_world(name):
return 'hello %s'%name
两个路由装饰器,
看着应该是使用 ‘/<name>’,如果name没有提供,那么就使用默认值:jack
二:使flask路由解析支持正则表达式。
另一种解法:给flask的url路由增加正则功能。
from flask import Flask, render_template ,request
from werkzeug.routing import BaseConverter #此行新增
app = Flask(__name__)
class RegexConverter(BaseConverter): #此函数新增
def __init__(self, url_map, *items):
super(RegexConverter, self).__init__(url_map)
self.regex = items[0] app.url_map.converters['regex'] = RegexConverter #此对象新增 @app.route('/')
def hello_world():
return render_template('plan.html',)
@app.route('/hello/<regex(".*"):name>') #关键的路由正则匹配
def hello(name): #对应的视图函数,随便你怎么写吧。
if name =='':
return 'hello no name'
else:
return "hello '%s'" % (name)
引用BaseConverter,创建类 RegexConverter
实例化RegexConverter
在路由中使用正则规则/hello/<regex(".*"):name>
其中/hello/是固定匹配的前缀,就和匹配/hello/一样,<regex(""):>应该是规范格式,“.*”双引号里面是正则表达式,name冒号后面是命名这个变量,给下面的函数交互输入。
可匹配
并把***传入视图函数。
Flask初级(九)flash与前台交互get详解的更多相关文章
- Flask初级(十)flash与前台交互post详解
Project name :Flask_Plan templates:templates static:static POST提交方式,首先要有表单 老实去改模板文件吧. 查询窗口我准备放在页面最顶上 ...
- “全栈2019”Java第五十九章:抽象类与抽象方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Flash播放控件属性详解
Flash 播放控件属性详解 一.属性篇 1.AlignMode(读写) 语法:AlignMode As Long 说明:对齐方式(与SAlign 属性联动).当控件的长宽比例与影片不一致且WMo ...
- Kotlin——初级篇(四):控制语句详解
在前面 的章节中讲解了Kotlin语言中的数据类型.变量与常量的定义.不了解请参见前面的内容: Kotlin--初级篇(三):数据类型详解. Kotlin--初级篇(二)常量.变量.注释. 下面详细为 ...
- Cocos 2d-X Lua 游戏添加苹果内购(二) OC和Lua交互代码详解
这是第二篇 Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程 这是前面的第一篇,详细的说明了怎样添加内购项目以及填写银行信息提交以及沙盒测试员的添加使用以及需要我们注意的东西,结 ...
- Flask初级(八)flash与前台交互get post 简介
Project name :Flask_Plan templates:templates static:static 两种 HTTP 请求方法:GET 和 POST在客户机和服务器之间进行请求-响应时 ...
- JSP数据交互——九大内置对象及其方法详解(一)
①既然说到JSP内置对象,那么什么是JSP内置对象呢? 解析:JSP内置对象,就是在编写JSP页面时,不需要做任何声明就可以直接使用的对象. 如下代码片段: <% int[] value ...
- SuperSocket入门(三)-Telnet多服务实例和服务实例交互配置详解
在SuperSocket入门(二)中我们已经简单了解了通过配置App.config文件使用BootStrap启动SuperSocket服务.我们先来看一下上个案例中的基本配置文件示例: < ...
- Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
随机推荐
- Linux环境下一些有用但不常见的命令
Linux环境下一些有用但不常见的命令 1.获取显卡硬件信息 lspci -vnn | grep VGA -A 12 (若是n卡,则用glxinfo) 2.执行*.sh文件 常见的执行*.sh文件当属 ...
- 【修改帐号信息】Eclipse中修改SVN用户名和密码方法
由于在svn 的界面中并没有为我们提供直接更换用户名密码的地方,所以一旦我们需要更换用户名的就需要自己想一些办法. 解决方案: 在Eclipse 使用SVN 的过程中大多数人往往习惯把访问SVN 的用 ...
- Unity3D学习笔记(十三):委托、考试复习
委托:比较什么时候用委托好 下课案例:不用下课铃 1.ClassManager需要拿到所有教室的引用,课堂管理者应该只负责计时并告知每间教室 2.每间教室应该是由当班老师负责是否需要下课,而课堂管 ...
- 【Coursera】Third Week(1)
The Early World-Wide-Web 关于CERN 欧洲核子研究组织,除了它为世界物理学所作出的卓越贡献,它还是世界上第一个网站,第一个网络服务器,第一个浏览器的诞生地. Robert C ...
- 关于ES6的箭头函数的详解
ok 坑比函数~~箭头函数~~不自己动手写看懂也不行~~~ 当然你也可以一点一点的把函数复制到Babel里面去将ES6转换成ES5 (斗笔行为) 老谢写的笔记教程就是深入(通俗易懂)哈哈~~~ 第 ...
- 用docker部署flask+gunicorn+nginx
说来惭愧,写了好几个flask django项目都是在原型阶段直接python app.py 运行的,涉及到部署用nginx和gunicorn 都是让别人帮我部署的,据说好像说很麻烦的样子,我就没自己 ...
- Oracle 千万级别数据查询优化
说明:平时很少接触到大数据分页,今天有兴趣在数据库插入1000万条数据进行测试,经过查询相关资料得到如下说明:笔者在工作中有一上百万条记录的表,在jsp页面中需对该表进行分页显示,便考虑用rownum ...
- GitHub 中国区前 100 名到底是什么样的人?
转一下CSDN的文章, 这里有些人挺厉害的. http://geek.csdn.net/news/detail/66000
- [Java学习] Java instanceof 运算符
多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 . C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符. insta ...
- 012 - jstat命令查看jvm的GC情况 | jvm
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量. 命令的格式如下: jstat -<option> [-t] [-h<lines>] <vmid> [ ...