flask状态保持实现
2018-03-20 00:00
302 查看
# coding=utf-8
# 第一步导入Flask类
from flask import Flask,make_response,current_app
# 导入配置文件
from settings import Config
#导入转换器
from werkzeug.routing import BaseConverter
# 动态路由参数,语法格式<>,默认的数据类型为str,兼容数值(eg:abcd,1234,1234.12)
# 第二步创建程序实例
# 传入__name__参数的作用是确定程序所在的位置
app = Flask(__name__)
"""配置对象(如果不开启debug=True,则通过配置对象开启调试模式,config为封装好的对象)"""
app.config.from_object(Config)
# 自定义转换器,既可以限制参数的类型,也可以限制参数的长度
class Regex(BaseConverter)
#regex = '[0-9]{5}'
def __init__(self,map,*args):
#调用父类的方法
super(Regex,self).__init__(map)
# args就是正则表达式
self.regex = args[0]
#看map和args[0]是什么
print '----map:',map #路由映射
print '----args',args[0] #rgs[0]就是下面的[a-z]{3}
#添加转换器到程序实例上
app.url_map.converters['re'] = Regex
#限制访问,优化访问路径
@app.route('/<re("[a-z]{3}"):num>')
def demo4(num):
return 'demo4:%s' % num
#原始的静态文件访问路径
#http://127.0.0.1:5000/static/html/detail.html
#优化后的访问路径
#http://127.0.0.1:5000/detail.html
@app.route('/<re(".*"):filename>')
def demo5(filename):
if not filename:
filename = 'index.html'
else:
filename = 'html/'+filename
#把具体的文件返回给浏览器,make_response(响应对象),current_app(代表程序实例,保存了很多app没有的东西)
resp = make_response(current_app.send_static_file(filename))
return resp
# 状态保持,http协议是无状态的,Tcp/IP协议,三次握手四次握手
# cookie和session的区别:
# 在浏览器中输入127.0.0.1:5000/setcookie ,页面出现set cookie'success,同时浏览器cookie中出现'user','python24'
@app.route('/setcookie')
def demo6():
resp = make_response('set cookie success')
#max_age为状态保持时间,过了时间就过期
resp.set_cookie('user','python24',max_age=300)
return resp
# 获取cookie,使用请求对象request 在页面输入127.0.0.1:5000/getcookie,页面出现 python24
@app.route('/getcookie')
def demo7():
resp = request.cookie.get('user')
return resp
# 限制参数的格式,如下,只能是浮点数
# 数值之间不兼容,只能限制数据类型,不能限制数据长度
@app.route('/demo3/<float:num>')
def demo3(num):
return 'demo3:%s' % num
# 第三步定义视图
@app.route('/',methods=['POST'])
def demo1():
return 'hello world2017'
@app.route('/')
def demo2():
return 'hello world2018'
# 第四步启动服务器
#__name__在被导入的情况下等于demo(文件名。txt前面的内容)
if __name__=='__main__'
# 查看所有的路由映射
print app.url_map
app.run()
# 第一步导入Flask类
from flask import Flask,make_response,current_app
# 导入配置文件
from settings import Config
#导入转换器
from werkzeug.routing import BaseConverter
# 动态路由参数,语法格式<>,默认的数据类型为str,兼容数值(eg:abcd,1234,1234.12)
# 第二步创建程序实例
# 传入__name__参数的作用是确定程序所在的位置
app = Flask(__name__)
"""配置对象(如果不开启debug=True,则通过配置对象开启调试模式,config为封装好的对象)"""
app.config.from_object(Config)
# 自定义转换器,既可以限制参数的类型,也可以限制参数的长度
class Regex(BaseConverter)
#regex = '[0-9]{5}'
def __init__(self,map,*args):
#调用父类的方法
super(Regex,self).__init__(map)
# args就是正则表达式
self.regex = args[0]
#看map和args[0]是什么
print '----map:',map #路由映射
print '----args',args[0] #rgs[0]就是下面的[a-z]{3}
#添加转换器到程序实例上
app.url_map.converters['re'] = Regex
#限制访问,优化访问路径
@app.route('/<re("[a-z]{3}"):num>')
def demo4(num):
return 'demo4:%s' % num
#原始的静态文件访问路径
#http://127.0.0.1:5000/static/html/detail.html
#优化后的访问路径
#http://127.0.0.1:5000/detail.html
@app.route('/<re(".*"):filename>')
def demo5(filename):
if not filename:
filename = 'index.html'
else:
filename = 'html/'+filename
#把具体的文件返回给浏览器,make_response(响应对象),current_app(代表程序实例,保存了很多app没有的东西)
resp = make_response(current_app.send_static_file(filename))
return resp
# 状态保持,http协议是无状态的,Tcp/IP协议,三次握手四次握手
# cookie和session的区别:
# 在浏览器中输入127.0.0.1:5000/setcookie ,页面出现set cookie'success,同时浏览器cookie中出现'user','python24'
@app.route('/setcookie')
def demo6():
resp = make_response('set cookie success')
#max_age为状态保持时间,过了时间就过期
resp.set_cookie('user','python24',max_age=300)
return resp
# 获取cookie,使用请求对象request 在页面输入127.0.0.1:5000/getcookie,页面出现 python24
@app.route('/getcookie')
def demo7():
resp = request.cookie.get('user')
return resp
# 限制参数的格式,如下,只能是浮点数
# 数值之间不兼容,只能限制数据类型,不能限制数据长度
@app.route('/demo3/<float:num>')
def demo3(num):
return 'demo3:%s' % num
# 第三步定义视图
@app.route('/',methods=['POST'])
def demo1():
return 'hello world2017'
@app.route('/')
def demo2():
return 'hello world2018'
# 第四步启动服务器
#__name__在被导入的情况下等于demo(文件名。txt前面的内容)
if __name__=='__main__'
# 查看所有的路由映射
print app.url_map
app.run()
相关文章推荐
- 四滴水:使用flask框架实现web页面与数据库数据互联+常见的几种状态码
- cookie实现保持用户登陆状态
- 使用react-router-dom优雅的实现页面(路由)跳转, 而且保持当前页面状态
- IPostBackDataHandler实现CollapablePanel控件的状态保持
- shiro实现APP保持登录状态,以及web统一登录认证和权限管理,会话保持在web和APP之间。
- jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
- Flask学习笔记---状态保持
- iOS开发保持用户登录状态-NSUserDefault实现数据持久化
- 如何在DBGrid中实现某一列的单元格进入编辑状态,其它列的单元格保持只读状态
- 不使用JS,使用CSS3 target 以及 动画效果实现,点击一下弹出,并且保持弹出状态,然后再点击一下弹回的导航栏(或者可以叫做按钮)
- Android ListView 中加入CheckBox/RadioButton 选择状态保持、全选、反选实现
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- Android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- 实现翻页或查询后保持复选框勾选状态
- JavaWeb应用如何实现保持登录状态
- JS实现对gridview中的checkbox的选中个数记录,并在页面刷新时保持checkbox的状态 .
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
- Android ListView 中加入CheckBox/RadioButton 选择状态保持、全选、反选实现
- js实现刷新页面后select标签保持选中状态