【发布时间】:2018-11-01 05:55:08
【问题描述】:
在尝试创建装饰器来包装我的应用程序视图时,我无法将参数传递给我的装饰器。 我的观点目前是这样的:
@api_view(['GET', 'POST'])
@permission_classes((IsAuthenticated,))
def some_view(request):
问题是,除了请求之外,我还想将一个额外的参数传递给我的通用视图。 我试过这个:
@api_view(['GET', 'POST'])
@permission_classes((IsAuthenticated,))
@generic_view("some argument")
def some_view(request):
使用这个 generic_view:
def generic_view(argument):
def _method_wrapper(func):
def decorator(request, *args, **kwargs):
some_function(argument)
data = func(request)
return Response(data, status=200)
return decorator
return _method_wrapper
问题是参数没有通过。我寻找它和论点,args 和 kwargs,它只是没有通过。 顺便说一句,我使用的是 django 1.8,python 2.7。
【问题讨论】:
-
我真的不明白问题出在哪里。什么不工作?
-
你最好做的唯一一件事就是将
*args和**kwargs也传递给func,并使用@wraps装饰器。但除此之外,它应该可以工作。 -
万一出现问题,您可以发布回溯(或至少相关部分)吗?
-
您确定您已通过身份验证吗?由于这些装饰器首先完成,因此它将首先执行过滤。只有在它是 GET 或 POST 并且
permission_classes接受请求的情况下,它才会向下传递一个级别。 -
我是。我刚刚编辑了帖子。我想通过的论点没有通过
标签: django python-2.7 django-views python-decorators