如何使用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