decorator中的Django视图参数
我有一个功能,我想成为一个装饰与参数请任何人可以帮助这一点decorator中的Django视图参数,django,python-2.7,django-views,Django,Python 2.7,Django Views,我有一个功能,我想成为一个装饰与参数请任何人可以帮助这一点 def get_permission(request,permission_level): if has_permission(request,permission_level):#this is another function #my work will be done here else: raise Http404 在我看来,我只想这样使用它 @get_permission(pe
def get_permission(request,permission_level):
if has_permission(request,permission_level):#this is another function
#my work will be done here
else:
raise Http404
在我看来,我只想这样使用它
@get_permission(permission_level)
def a_view(request)
有人能帮忙吗?谢谢看看,像这样的
from functools import wraps
from django.utils.decorators import available_attrs
def get_permission(permission_level):
def decorator(func):
@wraps(func, assigned=available_attrs(func))
def _wrapped(request, *args, **kwargs):
if has_permission(request, permission_level):
'special logic goes here...'
return func(request, *args, **kwargs)
else:
raise Http404
检查并编写装饰程序
或者您可以直接利用
用户\u通过测试
或所需权限
,如果装饰程序只是检查权限以确定返回的结果。您的“获取权限”要执行什么操作?权限级别的可能重复决定您是否可以获取该视图,因此视图具有与其关联的权限。因此,我将在装饰程序中传递“视图”权限,因此我不需要更改我的权限代码也许你可以从这里得到想法: