如何使用request_finished信號獲取並使用HttpRequest?如何從request_finished信號回調中訪問請求?
有興趣提取進行日誌記錄的URL。
當前的代碼看起來是這樣的:
import logging
def write_to_file(sender, **kwargs):
logging.debug(type(sender))
logging.debug(dir(sender))
from django.core.signals import request_finished
request_finished.connect(write_to_file)
生成此
2010-03-03 13:18:44,602 DEBUG <type 'type'>
2010-03-03 13:18:44,602 DEBUG ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', '_get_traceback', 'apply_response_fixes', 'get_response', 'handle_uncaught_exception', 'initLock', 'load_middleware', 'request_class', 'response_fixes']
我不確定你可以。你有沒有想過看關鍵字參數字典?如果您只是希望在每次請求時記錄一些信息,則應該使用中間件框架http://bit.ly/axVgOj進行研究。 – buckley 2010-03-03 05:08:59
'sender'是模型類,不是實例。如果提供了實例數據,您可以在'** kwargs'中找到它,但是'request_finished'不包含任何實例數據。你也許可以使用'post_save'信號。如果你有一個耗時的任務,你不希望請求在完成之前等待,那麼在新線程上運行它,比如'thread.start_new_thread(kwargs.get(「instance」)。do_something_time_consuming,())'。 – henrikstroem 2014-02-20 03:30:30
django上的文檔是一個類,而不是一個實例。 https://docs.djangoproject.com/en/1.9/ref/signals/#request-finished爲什麼接受完全錯誤的答案? – dalore 2016-05-03 15:20:12