繁体   English   中英

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

[英]How to run a python function on every Admin page load in Django

我希望在从管理界面加载页面的任何时候都可以运行python函数。 不需要在每个页面加载(即与管理员无关的页面)上运行。 此函数需要请求对象或用户标识。

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

更新:该功能用于挂接一种日志记录系统,该日志系统跟踪每个用户每天在用户使用管理界面时需要更新的第一次/最后一次交互。 中间件应用程序似乎可以让我做我想做的事情,谢谢大家!

免责声明:我对Django perse的内部或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

另请参阅:从有效Django 了解Django中间件

一种方法是创建一个中间件,并检查每个页面请求是否为管理页面:

https://docs.djangoproject.com/en/dev/topics/http/middleware/

我将以一种简单的方式处理它。 查找管理员必须执行的功能,例如save_model() 然后放入您自己的函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM