Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中的每个管理页面加载上运行python函数_Python_Django_Python 3.x_Django Admin - Fatal编程技术网

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

如何在Django中的每个管理页面加载上运行python函数,python,django,python-3.x,django-admin,Python,Django,Python 3.x,Django Admin,我希望在任何时候从管理界面加载页面时都能运行python函数。这不需要在每次加载页面时都运行(即与管理员无关的页面)。此函数需要请求对象或用户id 我知道我可以创建一个新视图并从页面的javascript调用它,但这似乎是一种可怕的方式。有没有一种方法可以在不添加任何附加依赖项的情况下将函数附加到服务器端的管理页面加载 更新:该功能用于连接到一种日志系统,该系统跟踪每个用户每天的第一次/最后一次交互,每当用户使用管理界面时,都需要更新这些交互。似乎中间件应用程序可以让我做我想做的事情,谢谢大家

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

我知道我可以创建一个新视图并从页面的javascript调用它,但这似乎是一种可怕的方式。有没有一种方法可以在不添加任何附加依赖项的情况下将函数附加到服务器端的管理页面加载


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

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


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

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

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

见:

小例子:

类localemidware(对象):

另请参见:来自Efficient Django。

免责声明:我对Django perse的内部或API知之甚少

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

见:

小例子:

类localemidware(对象):


另请参见:来自有效的Django。

我将用一种简单的方法来处理它。查找管理员必须执行的函数,例如
save\u model()
。然后把你自己的函数放进去。

我会用一种简单的方法来处理它。查找管理员必须执行的函数,例如
save\u model()
。然后把你自己的函数放进去。

这样做很糟糕。Hacks就是“Hacks”。这适用于只在保存对象时触发的事件,但我需要它在页面加载时运行,即使没有执行任何保存。实际上,我使用这种方法来保存用户上次编辑的内容或用户创建的某些对象。是的,它有局限性。这是一种可怕的方法。Hacks就是“Hacks”。这适用于只在保存对象时触发的事件,但我需要它在页面加载时运行,即使没有执行任何保存。实际上,我使用这种方法来保存用户上次编辑的内容或用户创建的某些对象。是的,它有局限性。你说的是什么类型的“Python函数”?它有什么作用?最好的解决方案取决于函数。你说的是什么类型的“Python函数”?它有什么作用?最佳解决方案取决于函数。
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