簡體   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