如何在 Django 中的每个管理页面加载上运行 python 函数

pfc*_*pfc 4 python django django-admin python-3.x

我希望在每次加载管理界面的页面时都运行一个 python 函数。这不需要在每个页面加载(即非管理相关页面)上运行。此函数需要请求对象或用户 ID。

我知道我可以创建一个新视图并从页面的 javascript 调用它,但这似乎是一种可怕的方法。有没有办法以某种方式将功能附加到管理页面加载服务器端而不添加任何额外的依赖项?

更新:该函数用于连接一种日志系统,该系统跟踪每个用户每天的第一次/最后一次交互,每当用户使用管理界面时就需要更新该交互。看来中间件应用程序可以让我做我想做的事,谢谢你们!

Jam*_*lls 5

免责声明:我对 Django 本身的内部结构或 API 知之甚少。

您需要使用/编写的是中间件组件。

请参阅:Django 中间件

简单的例子:

类 LocaleMiddleware(对象):

def process_request(self, request):

    if 'locale' in request.cookies:
        request.locale = request.cookies.locale
    else:
        request.locale = None

def process_response(self, request, response):

    if getattr(request, 'locale', False):
        response.cookies['locale'] = request.locale
Run Code Online (Sandbox Code Playgroud)

另请参阅: 《Effective Django》中的“了解 Django 中间件”