一.特殊装饰器(中间件) 1.before_request 在请求进入视图函数之前 @app.before_request def look(): 2. after_request 在结束视图函数之后,响应返回客户端之前 @app.after_request def af1(res) from flask import Flask, request, session, redirect app = Flask(__name__) app.secret_key = "#$%^&*(&quo…
1.flask中的特殊装饰器 前面我们讲过的装饰器函数中,用来登录验证,这次我们来介绍几个flask中的特殊装饰器 1). @app.before_request 具体的用途是: 在请求进入视图函数之前运行 @app.before_request def func1(): print('我是func1') 2).@app.after_request 具体的用途是 : 在执行完视图函数之后,响应客户之前运行 @app.after_request def func2(ret): print(f'我是…
一. Flask中的特殊装饰器 before_request # before_request 是在视图函数执行之前执行的 @app.before_request def before(): print('我是before_request') # return '有我在,你永远到不了视图函数' # 如果return的不是None,那么会直接返回,到不了视图函数 after_request # after_request 是在视图函数执行之后执行的 @app.after_request def a…
问题:route中的装饰器为什么感觉和平时使用的不太一样,装饰器带参数和不太参数有什么区别?被修饰的函数带参数和不带参数有什么区别? 测试1:装饰器不带参数,被修饰的函数也不带参数. def log(func): print"execute log" print func def use_log(): print "execute use log" def wrapper(): print "start" func() print "e…
1.Flask 中的路由   *endpoint - url_for 反向地址  *endpoint 默认是视图函数名  *methods 指定视图函数的请求方式,默认GET  defaults={"nid":1} 指定视图函数的默认参数  strict_slashes=False 是否严格遵循路由规则 /login/  redirect_to="/login" 永久跳转地址 301    *动态路由参数:  /<int:nid>  /<strin…
一.使用 Flask中的特殊装饰器(中间件)方法常用的有三个 @app.before_request # 在请求进入视图函数之前 @app.after_request # 在请求结束视图函数之后 响应返回客户端之前 @app.errorhandler(404) # 重定义错误信息 @before_request def func(): pass @after_request def func(ret): # 函数中要加参数 pass @app.errorhandler(404) # 错误代码 d…
目录 1.装饰器装饰多个视图函数出现的问题 2.使用装饰器修复技术解决该问题 1.装饰器装饰多个视图函数出现的问题 代码实例: from flask import Flask, request, render_template, session, redirect app = Flask(__name__) app.secret_key = "$%@&!**" # $%@&!**是加密字符串,可随意设置 @app.route("/login", me…
调用包: from functools import wraps 装饰器其实就是一个函数:参数是一个函数,返回值是一个函数 1.装饰器使用是通过@符号,在函数的上面 2.装饰器中定义的函数,要使用*args,**kwargs两对兄弟组合,并且在这个函数中执行原始函数的 时候也要把*args,**kwargs传进去 3.需要使用functools.wraps在装饰器的函数上,把传进来的函数进行包裹,这个不会丢失原始函数 的__name__等属性 def my_log(func): @wraps(f…
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全…
1.模板语言jinja2 Flask中默认的模板语言是Jinja2 1.0 模板传参 from flask import Flask,render_template app = Flask(__name__) @app.route("/") def index(): content = { "name":"learning", ", "sex":"男" } return render_templa…
Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存在存在两种url和视图对应的形式:类和函数 CBV:类视图 ##### class based view 基于类 ### 出版社添加 urls.py中填写url和类的对应关系. #PublishAdd是类,要执行as_view()方法 url('^publish_add',views.Publish…
- 先记住一句话:自定义python装饰器时一定要记住使用@functools.wraps(func)修饰wrapper - 在Flask中使用装饰器遇到AssertionError: View function mapping is overwriting an existing... - 报错的大概意思就是存在相同的view,在flask中,如果定义了两个相同函数名的view,就会报这种报这种错误,例如: - 但是上例中的两个函数名分别是index和course,是不相同的,为什么会报这种错…
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip install flask Flask: - 短小精悍.可扩展性强的一个Web框架. - 依赖wsgi:werkzurg(安装Flask时,这些依赖也会被自动安装) 2.Werkzurg服务器 单独使用Werkzurg服务器: from werkzeug.wrappers import Request…
Django基础七之CBV装饰器和中间件 目录 Django基础七之CBV装饰器和中间件 1. CBV加装饰器 2. Django中间件 2.1 Django中间件介绍 2.2 自定义中间件 2.2.1 自定义中间件 2.2.2 自定义中间件总结 2.2.3 其他中间件函数 2.3 新版本中间件写法 3.Csrf中间件 1. CBV加装饰器 CBV加装饰器有三种方法, 案例:要求登录(不管get请求还是post请求)后才可以访问 HTML代码 index.html <!DOCTYPE html>…
生活在魔都的小明,终于攒够了首付,在魔都郊区买了一套房子:有一天,小明踩了狗屎,中了一注彩票,得到了20w,小明很是欢喜,于是想干脆用这20万来装修房子吧(decoration): 整个装修过程,小明费心费力,终于,装修结束了,小明入住了新家: 可是,住了一段时间,小明发现,白色的墙壁太没有逼格,怎么办呢?他想要重新刷墙(重构原始函数),但是作为程序猿的小明想到,以后总有一天新的墙面要看腻,为什么不在原来的墙面上贴上壁纸呢,选择还比较多:于是他采用了贴壁纸的方案(装饰器): 从此,小明过上了随意…
简单点就是这种 def deco2(param=1): def _deco2(fun): def __deco2(*args, **kwargs): print (param) fun(*args, **kwargs) return __deco2 return _deco2 @deco2 # 错误的写法 def f2(strx): print (strx) f2('hello') 运行上面这个,期待打印1和hello 实际上是不会打印任何东西的,因为@deco2后面忘了加括号,这样就悲剧了,把…
12.33 Django框架简介: MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),具有耦合性低.重用性高.生命周期成本低等优点 Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性. Django框架的不同之处在于它拆分的三部分为:Model(模型).Template(模板)和View(视图),也就是MTV框架. M…
给FBV加装饰器 FBV:function based view FBV本身就是一个函数,所以跟普通函数加装饰器是一样的 # 装饰函数是要在APP文件中定义,本例是在app01\templatetags\tag.py中进行定义 def wrapper(func): def inner(*args,**kwargs): start_time = time.time() ret = func(*args, **kwargs) end_time = time.time() print("last:&q…
关于 Decorator 到底是 ES 6 引入的还是 ES 7 引入的我也不是很明白了,两种说法都有,这种问题懒得纠结了--在用的时候发现这个东西很好用,平常用处可能不大,但是结合 React 就很好使了.接下来就讲一讲. 一.环境搭建 我搭建了一个 React 开发环境,结合 babel 的插件--babel-plugin-transform-decorators-legacy一起使用,这个插件可以让你写 Decorator. GitHub 地址:https://github.com/zho…
目录 一.@Component 装饰器 1)父组件 2)子组件 二. @Emit 装饰器 1)父组件 2)子组件 三. @Model 装饰器 1)父组件 2)子组件 四. @Prop 装饰器 1)父组件 2)子组件 五. @Provide 装饰器 和 @Inject 装饰器 1)父组件 @Provide 2)子组件 @Inject 六. @Watch 装饰器 备注: 代码中 el-* 的标签是 ElementUI 的组件. 一.@Component 装饰器 @Component 装饰器是用以声明…
目录 Flask - 特殊装饰器 和 Flask工作结构模式 @app.errorhandler() @app.before_request @app.after_request FBV和CBV Flask - 特殊装饰器 和 Flask工作结构模式 @app.errorhandler() 作用: 重定义错误返回信息! @app.errorhandler(404) def error404(a): return f"你要查看的页面,被怪兽吃了!{a}" @app.before_requ…
一.before_request装饰器和after_request装饰器 我们现在有一个Flask程序其中有3个路由和视图函数 from flask import Flask app = Flask(__name__) # type:Flask @app.route("/login") def login(): return "Login" @app.route("/index") def index(): return "Index&…
cookie的由来: 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要“保持状态”.因此Cookie就是在这样一个场景下诞生. 什么是Coo…
Session: Flask 默认将 session 以加密的形式放到了浏览器的 cookie 中 Flask 的 session 就是一个字典,字典有什么方法 session 就有什么方法 flask session 原理:当请求刚进来时,flask会读取cookie中 session(配置文件中能改这个名称) 对应的值,将这个值解密并反序列化成为一个字典放入内存, 以便视图函数使用: 在视图函数中使用时,按照字典的方法使用: 当请求结束时,flask会读取内存中字典的值,进行序列化+加密,然…
首先介绍装饰器,以下是一段标注了特殊输出的代码.用于帮助理解装饰器的调用过程. import time def Decorator_one(arg1): info = "\033[1;31;40mthis is Decorator_one with para " + str(arg1) print(info) def _Decorator_one(func): print('\033[1;31;40mthis is _Decorator_one') def __Decorator_on…
一 路由系统 1. 在flask中配置URL和视图函数的路由时,首先需要在main.py中实例化一个app对象: from flask import Flask, render_template app = Flask(__name__) 2. 然后通过app实例的route方法装饰视图函数,实现路由的配置: @app.route('/') def hello_world(): return 'Hellow World!' 3. 所有这里需要关注在Flask类里定义的route方法,以理解Fla…
1.endpoint参数,解决视图函数重名问题(包括装饰后重名问题) http://www.cnblogs.com/eric-nirnava/p/endpoint.html 每个应用程序app都有一个view_functions,这是一个字典,存储endpoint-view_func键值对.add_url_rule的第一个作用就是向view_functions中添加键值对(这件事在应用程序run之前就做好了) 每个应用程序app都有一个url_map,它是一个Map类(具体实现在werkzeug…
FBV装饰器: def cook(request): err_msg="" if request.method == "GET": return render(request,'cookie.html') if request.method == "POST": username = request.POST.get('username') p = request.POST.get('password') dic = user_info.get(…
现有如下检查登录装饰器: from functools import wraps def check_login(func): @wraps(func) def inner(request, *args, **kwargs): next_url = request.get_full_path() if request.session.get("user"): return func(request, *args, **kwargs) else: return redirect(&quo…
组件: ​ 把一小段HTML 放在一个HTML中 nav.html ​ 使用: ​ {% include ‘nav.html ’ %} 一. FBV 和CBV 1.FBV(function base views) 就是在视图里使用函数处理请求 (之前都是FBV模式) 2.CBV(class base views) 就是在视图里使用类处理请求   ①基本形式 # urls.py 文件中 from django.conf.urls import url from app01 import views…