我的所有视图函数都需要django请求对象来传递一些测试。是否有一个更短的符号,而不是
@request_passes_test(always_the_same_test)
在每个视图函数之上?
答案 0 :(得分:0)
完成。我定义并注册了这个中间件类来执行passes_test检查。我从内置的@user_passes_test
中复制了一下class RequestIsAuthorizedMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if always_the_same_test(request):
return self.get_response(request)
path = request.build_absolute_uri()
resolved_login_url = resolve_url('/')
login_scheme, login_netloc = urlparse(resolved_login_url)[:2]
current_scheme, current_netloc = urlparse(path)[:2]
if ((not login_scheme or login_scheme == current_scheme) and
(not login_netloc or login_netloc == current_netloc)):
path = request.META.get('HTTP_REFERER') or '/'
return redirect(path)