我正在爲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