Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为每个函数调用使用带Flask RESTPlus的装饰器?_Python_Python Decorators_Flask Restplus - Fatal编程技术网

Python 如何为每个函数调用使用带Flask RESTPlus的装饰器?

Python 如何为每个函数调用使用带Flask RESTPlus的装饰器?,python,python-decorators,flask-restplus,Python,Python Decorators,Flask Restplus,我在将装饰程序应用于我的资源时遇到问题。Apidecorators参数应用于每个资源函数,或者我必须如何理解decorators参数?我的decorator只在启动时应用,而不是在每次函数调用时应用。我做错了什么 从烧瓶导入烧瓶,蓝图 从flask.ext.restplus导入Api、资源和字段 app=烧瓶(名称) def my_decorator(输入): 打印(“我的装饰师”) 返回输入 api_blueprint=blueprint('index',_名称,url_前缀='/0') ap

我在将装饰程序应用于我的
资源
时遇到问题。
Api
decorators
参数应用于每个资源函数,或者我必须如何理解
decorators
参数?我的decorator只在启动时应用,而不是在每次函数调用时应用。我做错了什么

从烧瓶导入烧瓶,蓝图
从flask.ext.restplus导入Api、资源和字段
app=烧瓶(名称)
def my_decorator(输入):
打印(“我的装饰师”)
返回输入
api_blueprint=blueprint('index',_名称,url_前缀='/0')
api=api(api_蓝图,版本='0.1.0',标题='索引api',
description='Index API有助于在自己的数据库中更快地查找内容',
#ui=False,
decorators=[my_decorator]
)
应用程序注册蓝图(api蓝图)
ns=api.namespace('index',description='index-api')
search\u id\u score\u model=api.model('id'{
“id”:fields.String(必需=True),
“分数”:字段。浮点(必需=真)
})
搜索结果模型=api.model('result'{
“key”:fields.String(必需=True),
“id”:fields.List(fields.Nested(搜索\u id\u得分\u模型,必需=True),必需=True)
})
@ns.route(“/search/”)
类搜索(资源):
“塞拉克”
@api.封送列表(搜索结果模型)
@我的装饰师
def get(自我,查询):
''通过查询获取结果''
一无所获
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)

有两个修饰符级别:API范围和资源范围

Api.decorators参数允许将decorators应用于所有资源,而Resource.method\u decorators将应用于给定资源的所有方法

在您的案例中,问题在于您的装饰程序只在应用打印后调用打印,而不是调用打印。 您应该像这样修改装饰器:

def my_decorator(func):
def包装(*args,**kwargs):
打印(“我的装饰师”)
返回函数(*args,**kwargs)
包装器.\uuuuu文档\uuuuu=func.\uuuuu文档__
包装器.\uuuuu名称\uuuuu=func.\uuuuuu名称__
返回包装器
请注意
\uuuu doc\uuuuuuu
\uuuu name\uuuuuuuu
的装腔作势。第一个允许正确提取描述,
\uuuu name\uuuu
允许避免自动命名冲突。如果手动为每个资源指定端点,名称是可选的。

好的,我找到了,有了它,我可以对每个方法调用应用我的decorator。到目前为止,我仍然想知道如何理解
restful.Api
中的decorators参数,以及如何不对每个资源重复我自己。