我有一个Django视图和一个装饰器@token_required
,但我想将此装饰器应用于函数,仅当方法为POST
时。
现在我有:
@token_required
def articles(request):
if request.method == 'POST':
...
if request.method == 'GET':
...
但装饰器适用于GET和POST
答案 0 :(得分:1)
在应用它之前,将装饰器包装在你自己的装饰器中进行检查。如果是POST
请求,则通过在视图函数上调用token_required
来调用获得的函数,否则只需调用视图函数。
from functools import wraps
def token_required_on_post(f):
require = token_required(f)
@wraps(f)
def wrapped(*args, **kwargs):
if request.method == 'POST':
return require(*args, **kwargs)
return f(*args, **kwargs)
return wrapped
@token_required_on_post
def articles(request):
...