python – 一个Flask装饰器怎么有参数?
发布时间:2021-01-17 14:04:05 所属栏目:Python 来源:互联网
导读:我以与这里相同的方式实现了装饰器 How to make a python decorator function in Flask with arguments (for authorization) 但问题依然未解决… 我有这个功能与装饰器 @blueprint.route(var)@blueprint.my_decorator(var)def function(var):
我以与这里相同的方式实现了装饰器
我有这个功能与装饰器 @blueprint.route('<var>') @blueprint.my_decorator(var) def function(var): do stuff 我收到这个错误 NameError: global name 'var' is not defined 我该如何解决? 更新 蓝图是继承Blueprint类的一个类. def my_decorator(self,fn): @wraps(fn) def decorator(*args,**kwargs): value = kwargs['value'] # do stuff with value return fn(*args,**kwargs) return decorator 但仍然是一个uknown的关键… 解决方法装修者在进口时执行,基本上是语法糖:@foo(bar) def baz(): return 'w00t!' 相当于 def baz(): return 'w00t!' baz = foo(bar)(baz) 所以在上面的例子中,变量bar必须存在于该模块的全局范围之前,才能作为参数传递给装饰器.这就是你告诉你的错误. 更新 基于下面的讨论,问题中的代码应该拦截传递给查看函数的值,并使用它执行某些操作.以下是一个示例: from functools import wraps from flask import Flask,abort app = Flask(__name__) def foobar(fn): @wraps(fn) def decorated_view(*args,**kwargs): value = kwargs['value'] # Do something with value... if value == 'foobar': abort(400) return fn(*args,**kwargs) return decorated_view @app.route('/<value>') @foobar def view(value): return value (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 为什么最后一个命令变量“_”不出现在dir()中?
- django – MongoEngine _types和_cls字段
- 如何在Python中有效地编码bigram计数和替换的字节对?
- python – “I; 16”图像文件的numpy.array
- python – Django – 模板显示模型verbose_namesobjects
- python – Matplotlib显示多个图像与for循环
- Python键入模块类型
- flask:wsgi-middleware vs before_和after_request()
- python – Networkx:将多重图形转换为加权边缘的简单图形
- python – 从defaultdict获取原始密钥集
推荐文章
站长推荐
- TypeError:’function’对象不可订阅 – Python
- 在没有busywait的情况下在python中实现亚毫秒处理
- python – 什么是django.utils.functional .__ p
- python – 无法重现使用astropy获取的源之间的距
- Python – 通过偶数或奇数索引将列表拆分为2?
- Python Popen shell = False导致OSError:[Errno
- opencv python中cv2.NORM_L2和cv2.NORM_L1之间的
- python – 我的Model主键如何以特定的数字开头?
- python – 在OS X上安装Numba时出错
- 可选的python参数没有破折号但有附加参数?
热点阅读