【发布时间】:2014-10-22 17:09:02
【问题描述】:
我有一些像这样结构的 django 视图处理函数
def view1(request):
# Check for authorization
if not isAuthorized(request):
return HttpResponse('Foo error', status=401)
return HttpResponse('view1 data')
def view2(request):
# Check for authorization
if not isAuthorized(request):
return HttpResponse('Foo error', status=401)
return HttpResponse('view2 data')
def view3(request):
# Check for authorization
if not isAuthorized(request):
return HttpResponse('Foo error', status=401)
return HttpResponse('view3 data')
我想做这部分:
# Check for authorization
if not isAuthorized(request):
return HttpResponse('Foo error', status=401)
某种单行,所以我不必在每个视图中重复它
在 C 中,这将是一个宏,但我不知道如何在 python 中实现类似的功能
检查授权功能部分是一个例子,它可以是任何与特别是用户授权无关的检查
[编辑]
https://stackoverflow.com/users/2337736/peter-deglopper 提到装饰器...
详细说明
我有一个可以接受 POST 或 GET 的 Web API
# return either GET or POST dict whichever exists
def getParams(request):
if request.method == 'GET':
return request.GET
return request.POST
视图这样做:
def someAPI(request):
dct = getParams(request)
if not isValid(dct):
return HttpResponse('Bad request', status=401)
如何使用装饰器来实现这一点?我在两者之间有那个 getParams() 函数....
【问题讨论】: