如何在django的每个视图中运行一段代码?

Sil*_*ght 10 python django

如果授权失败,我需要在我的一个Django应用程序的每个视图中检查用户授权(我不使用Django内置的auth系统)并将用户重定向到"login please"页面.

代码如下所示:

try:
    admin_from_session = request.session['admin'];
    admin = Administrator.objects.get(login = admin_from_session.login, password = admin_from_session.password, enabled=True);
except KeyError, Administrator.DoesNotExist:
    return HttpResponseRedirect('/controlpanel/login')
Run Code Online (Sandbox Code Playgroud)

问题是:如何在每个视图的开头运行此代码,而不是每次都重复?

如果我在PHP上编写我的程序,我会将这些代码放在单独的文件中,并在需要授权的每个页面的开头写下这样的代码:

include("redirect_if_not_logged_in.inc.php");
Run Code Online (Sandbox Code Playgroud)

我找到的解决方案是:

  • 包含标签 - 没有,因为我无法从那里重定向
  • 自定义功能 - 也不做,因为同样的原因.

这项任务似乎微不足道,但我无法找到解决方案.我会非常感谢任何帮助.

Lud*_*mer 6

查看django.contrib.auth装饰器源代码.它们完全符合您的要求,但对于内置的Django身份验证系统(请参阅文档).为您的身份验证系统做类似的事情应该不难.

顺便说一下,你为什么不使用内置的auth?您可以将它与自定义身份验证后端一起使用...