我正在扩展用户配置文件并添加了一个last_ip字段,如下所示.每当用户登录其当前IP时,如何更新此字段?如果重要,我正在使用allauth.
class UserProfile(models.Model): user = models.OneToOneField(User) last_ip = models.GenericIPAddressField(protocol='IPv4', verbose_name="Last Login IP") location = models.CharField(max_length=50, blank=True)
Tiny Instanc.. 7
要实际获取用户IP地址,您可以使用django-ipware.还有其他方法,但这个应用程序似乎尽可能覆盖,您可以查看此问题的详细信息.
拥有USER_IP后,您可以创建中间件并last_ip
为每个请求更新
# middleware.py class LastLoginIP(object): def process_request(self, request): if request.user.is_authenticated(): UserProfile.objects\ .filter(user=request.user)\ .update(last_ip=USER_IP) # settings.py add the middleware MIDDLEWARE_CLASSES = ( .... your.middleware.LastLoginIP )
或者,如果您已经设置了一个系统,每个配置文件只允许一次并发登录(每次用户切换设备时,他/她必须再次登录),那么您可以last_ip
在登录期间更新.
要实际获取用户IP地址,您可以使用django-ipware.还有其他方法,但这个应用程序似乎尽可能覆盖,您可以查看此问题的详细信息.
拥有USER_IP后,您可以创建中间件并last_ip
为每个请求更新
# middleware.py class LastLoginIP(object): def process_request(self, request): if request.user.is_authenticated(): UserProfile.objects\ .filter(user=request.user)\ .update(last_ip=USER_IP) # settings.py add the middleware MIDDLEWARE_CLASSES = ( .... your.middleware.LastLoginIP )
或者,如果您已经设置了一个系统,每个配置文件只允许一次并发登录(每次用户切换设备时,他/她必须再次登录),那么您可以last_ip
在登录期间更新.