如果使用 `rest-auth` 用户登录时如何添加 last_login_ip?

How to add the last_login_ip, when the user login if using `rest-auth`?

如何在用户使用rest-auth登录时添加last_login_ip?

在询问 post 之前,我在下面搜索了一个 post:

答案非常适合自定义验证登录参数。

但是,登录后,给用户添加属性怎么样?

我的意思是,答案只是为了验证数据,我想在用户登录成功后,我想将last_login_ip添加到用户实例中。


编辑

请注意,我知道如何获取访问我站点的远程IP。我的意思是我使用 rest-auth 登录,并像 link 一样自定义了 LoginSerializer。 link是为了验证登录数据,我不能更改LoginSerializer中的last_login_ip数据,我想当用户登录成功后,再更改用户的last_login_ip .但是在哪里写我的更改 last_login_ip 代码?


EDIT-2

我听从了@at14 的建议,在init.py(与apps.py 处于同一水平):

default_app_config = '管理员后台.用户管理.qiyun_admin_usermanage.apps.QiyunAdminUsermanageConfig'

并在 apps.py 中:

from django.apps import AppConfig

class QiyunAdminUsermanageConfig(AppConfig):
    name = 'qiyun_admin_usermanage'

    def ready(self):
        import 管理员后台.用户管理.qiyun_admin_usermanage.api.signals

会出现如下错误:

django.core.exceptions.ImproperlyConfigured: Cannot import 'qiyun_admin_usermanage'. Check that '管理员后台.用户管理.qiyun_admin_usermanage.apps.QiyunAdminUsermanageConfig.name' is correct.

我也尝试在init.py中评论default_app_config = '管理员后台.用户管理.qiyun_admin_usermanage.apps.QiyunAdminUsermanageConfig',但还是不行。

使用 django 的用户登录信号将此信息保存到数据库中。

在signals.py,

from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver

@receiver(user_logged_in)
def user_logged_in_callback(sender, user, request, **kwargs):
   // Get the IP Address and save it

阅读有关信号的更多信息here。 请注意如何在您的应用就绪方法中导入信号

在您的应用程序目录中创建一个 apps.py(它可能已经存在),

from django.apps import AppConfig


class YourAppConfig(AppConfig):
    name = '管理员后台.用户管理.qiyun_admin_usermanage'

    def ready(self):
        import 管理员后台.用户管理.qiyun_admin_usermanage.api.signals  # noqa

在您的应用程序 init.py 文件中,

default_app_config = '管理员后台.用户管理.qiyun_admin_usermanage.apps.QiyunAdminUsermanageConfig'