如果使用rest-auth
用户登录,如何添加last_login_ip?
Befor问我在帖子中搜索了一个帖子:
How can I do my logic in `http://127.0.0.1:8000/rest-auth/login/` of `django-rest-auth`?
答案非常适合自定义验证登录参数。
但是,登录后怎么样,然后向用户添加属性?
我的意思是,答案只是为了验证数据,我想在用户登录成功之后,我想将last_login_ip
添加到用户实例。
修改
请注意,我知道如何获取访问我网站的远程IP。我的意思是我使用rest-auth
登录,并自定义LoginSerializer,如链接。该链接用于验证登录数据,我无法更改last_login_ip
中的LoginSerializer
数据,我想在用户登录成功时,然后更改用户的last_login_ip
。但在哪里写我的更改last_login_ip代码?
修改-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.
我还尝试对default_app_config = '管理员后台.用户管理.qiyun_admin_usermanage.apps.QiyunAdminUsermanageConfig'
中的init.py
发表评论,但仍无效。
答案 0 :(得分:1)
使用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。 请注意如何在app ready方法中导入信号
在你的app目录中创建一个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'