我在 Django 中有一个 Rest API,并且在扩展 ModelViewSet 的类中有以下方法:
@custom_decorator
@action(methods=['get'], detail=False, url_name="byname", url_path="byname")
def get_by_name(self, request):
# get query params from get request
username = request.query_params["username"]
experiment = request.query_params["experiment"]
Run Code Online (Sandbox Code Playgroud)
如果我删除第一个注释器,一切正常。但是当我尝试使用两个装饰器调用此函数时,它甚至找不到特定的 url 路径。
是否可以将多个装饰器与 @action 装饰器一起使用?
Ado*_*lfo 11
我遇到了同样的问题并通过以下方式修复它:
from functools import wraps
def custom_decorator(func):
# ADD THIS LINE TO YOUR CUSTOM DECORATOR
@wraps(func)
def func_wrapper(*args, **kwargs):
return func(*args, **kwargs)
return func_wrapper
@action(methods=['get'], detail=False, url_name="byname", url_path="byname")
@custom_decorator
def get_by_name(self, request):
# other code
Run Code Online (Sandbox Code Playgroud)
我认为问题在于添加后动作装饰器无法识别该函数,custom_decorator因为名称已更改,因此添加@wraps(func)函数名称保持不变。(@wraps 文档)
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |