我正在为Django视图创建装饰器,它将检查非Django托管数据库中的权限。这里是装饰:Django装饰获取WSGIRequest而不是预期的函数参数
def check_ownership(failure_redirect_url='/', *args, **kwargs):
def _check_ownership(view):
def _wrapper(request, csi=None):
try:
opb_id=request.user.get_profile().opb_id
if opb_id and csi and model.is_users_server(opb_id, csi):
return view(*args, **kwargs)
except Exception, e:
logger.debug("Exception checking ownership: %s", str(e))
return HttpResponseRedirect(failure_redirect_url)
_wrapper.__dict__=view.__dict__
_wrapper.__doc__=view.__doc__
return _wrapper
return _check_ownership
这是如何被使用它:
@check_ownership
def my_view(request, csi=None):
"""Process my request"""
check_ownership()被调用和返回_check_ownership()。当_check_ownership()被调用时,它被调用一个WSGIRequest对象,这是我所期望的_wrapper()被调用。任何人有任何想法,我的方法已经走了,我怎么能得到它?我没有办法链接到下一个装饰者或实际观点。
哦,CentOS和Django 1.1.1上的Python 2.4.3。
我希望我的功能回来! ;)
谢谢。
TJ