本文实例讲述了瓶框架实现给视图函数增加装饰器操作。分享给大家供大家参考,具体如下:
在<代码> @app.route> 代码的情况下增加装饰器的写法:
从进口瓶瓶,请求、render_template重定向,会话,url_for、视图 从瓶进口render_template 应用=瓶(__name__) #实例化瓶对象 app.debug=True #能够随时更改自动重启,不加的话每次更改代码需要手动重启 app.config [' SECRET_KEY ')=' 123456 ' # SECRET_KEY,用于给会话加密 @app.route('/登录',方法=暗玫健?“文章”,端点=t1) #端点是url的别名,相当于django url中的名字 def登录(): 如果请求。方法==盎竦谩? # res=request.query_string #打印(res)获取通过得到请求url传过来的参数 返回render_template (“login.html”) 其他: 用户=request.form.get(“用户”) pwd=request.form.get (pwd) 如果用户==滥贰蚿wd==?23’: 用户会话(“用户信息”)=#设置会话 返回render_template (“hello.html”) 返回render_template(登录。html的,错误='用户名或密码错误”) def wap(函数): def内部(* args, * * kwargs): 用户=session.get (“user_info”) 如果没有用户: 返回重定向(/登录) 返回func (* args, * * kwargs) 回归内心的 @app.route('/细节/& lt; int: nid>”,方法=玫健?端点=皀1”) @wapper )(国家免疫日def细节: 打印)(国家免疫日 返回render_template (“hello.html”) “‘ 如果给一个视图函数增加装饰器,应该加在app.route下面,这样的效果就是, 装饰器将下面的所有内容包裹,然后路由对应到这大的包裹中来。 需要注意端点要注明,如果不注明端点则默认用函数名来定义, 此时所有的函数名都叫内在了,所以需要注明端点,只是为了区分。 “‘ if __name__==癬_main__”: app.run () >之前另一种写法:
进口functools def wap(函数): @functools.wraps(函数) def内部(* args, * * kwargs): 返回func (* args, * * kwargs) 回归内心的 “‘ functools.wraps()相当于保留元信息 说白了就是,如果不加这个装饰器,那么你打印细节的__name__它就是内了, 因为加了装饰器,效果等同于内心的=(细节()), 如果在装饰器中加了functools这个装饰器,那么相当于给__name__重新赋值,内部。__name__=func.__name_ - 其函数的名字得以保留。 “‘ @wapper def细节(): 通过 打印(detail.__name__) >之前烧瓶的get_flashed_messages, flash
从进口瓶瓶,get_flashed_messages, flash 应用=瓶(__name__) app.secret_key=' asdf ' @app.route (“/? def get (): data=https://www.yisu.com/zixun/get_flashed_messages () 打印(数据) 返回'Hello世界” @app.route(/设置) def组(): flash(“信息信息”) “‘ 闪现效果,相当于集视图函数执行2次,会在一个列表中存储两个flash函数的内容, 当执行get_flashed_messages的时候则会取出该列的表,并清空,类似字典的流行音乐。 具体用处不大… “‘ 返回“Hello world” if __name__==癬_main__”: app.run () >之前flash还可以通过类别参数给flash内容归类,通过不同类别取不同内容。
更多关于Python相关内容可查看本站专题:《Python入门与进阶经典教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》,《Python字符串操作技巧汇总》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
瓶框架实现给视图函数增加装饰器操作示例