说我有以下观点:
def show(request):
protect(request)
... some more code here...
return render_to_response
...
“protect”是另一个我正在导入的应用视图:来自watch.actions import protect
在保护中,我做了一些检查,如果满足条件,我想从“保护”中使用render_to_response并阻止返回显示。如果不满足条件,我想通常返回“show”并继续执行代码。
我该怎么做?
感谢。
答案 0 :(得分:1)
如果它的唯一目的是你所描述的,你应该考虑将protect
写成视图装饰器。 This answer提供了一个如何执行此操作的示例。
根据我编写的视图装饰器,您的protect
装饰器看起来像:
from functools import wraps
from django.utils.decorators import available_attrs
def protect(func):
@wraps(func, assigned=available_attrs(func))
def inner(request, *args, **kwargs):
if some_condition:
return render_to_response('protected_template')
return func(request, *args, **kwargs)
return inner
这将允许您使用它,如:
@protect
def show(request):
...
return render_to_response(...)