Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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用户名以记录信号_Django_Logging_Signals - Fatal编程技术网

获取Django用户名以记录信号

获取Django用户名以记录信号,django,logging,signals,Django,Logging,Signals,我正在尝试登录Django。我想记录每次用户保存或修改数据的情况。在我的信号处理程序代码中,我有如下内容: @receiver(post_save) def post_save_callback(sender, instance, created, raw, using, update_fields, **kwargs): logger.info( 'Post-save called for %s. Created? %r. update_fields: %s', sender,

我正在尝试登录Django。我想记录每次用户保存或修改数据的情况。在我的信号处理程序代码中,我有如下内容:

@receiver(post_save)
def post_save_callback(sender, instance, created, raw, using, update_fields, **kwargs):
logger.info(
    'Post-save called for %s. Created? %r. update_fields: %s',
    sender, created, json.dumps(update_fields)
)

我还想记录执行数据操作的用户的用户名,基本上是当前登录的用户。如何获取此用户名?

如文档中所述,当许多代码可能对同一事件感兴趣时,信号非常有用

是这样吗

如果在管理面板中执行数据操作,可以考虑重写<代码> LogyRechange < /C> >方法>代码> ModelAdmin >代码>对象,您可以使用<代码>请求。用户。用户名<代码>获取当前登录用户的用户名。

def log_change(self, request, object, message):
    logger.info('User %s changed user data %s. %s' % 
                (request.user.username, object, message)
    super(MyClass, self).log_change(request, object, message)

请记住,ModelAdmin已经在管理日志中记录了更改,当许多代码可能对同一事件感兴趣时,文档中描述的文档信号非常有用

是这样吗

如果在管理面板中执行数据操作,可以考虑重写<代码> LogyRechange < /C> >方法>代码> ModelAdmin >代码>对象,您可以使用<代码>请求。用户。用户名<代码>获取当前登录用户的用户名。

def log_change(self, request, object, message):
    logger.info('User %s changed user data %s. %s' % 
                (request.user.username, object, message)
    super(MyClass, self).log_change(request, object, message)

请记住,ModelAdmin已经在管理日志中记录了更改,文档无法完成。当前用户只能通过使用
post\u save
时不可用的请求使用。 要实现您想要的目标,您可以执行以下操作之一:

  • 您可以覆盖该模型上的save()方法
  • 您可以使用中间件来存储当前用户(请参见此图,它可以自动将由外键引用创建的用户和由外键引用修改的用户添加到任何模型)

  • 不行。当前用户只能通过使用
    post\u save
    时不可用的请求使用。 要实现您想要的目标,您可以执行以下操作之一:

  • 您可以覆盖该模型上的save()方法
  • 您可以使用中间件来存储当前用户(请参见此图,它可以自动将由外键引用创建的用户和由外键引用修改的用户添加到任何模型)

  • 我对记录对数据的所有更改感兴趣,无论是通过管理面板还是通过web表单或REST。因此,我认为使用信号是一种方法,对吗?我对记录数据的所有更改感兴趣,无论是通过管理面板还是通过web表单或REST。所以我认为使用信号是一种方式,对吗?