我是 Django 的新手,正在尝试建立一个博客来记录用户登录的时间和用户注销的时间。
我猜这会出现在视图中,但我不知道如何解决这个问题。
我将如何发送用户登录数据库的时间?
任何提示和指导将不胜感激。
auth.model.User.last_login
假设您使用的是 Django 的内置身份验证,您可以使用它来获取用户的最后登录时间:
user = User.objects.get(username='johndoe')
last_login = user.last_login
如果您想将此数据存储在User
表格以外的其他位置,您只需将其插入last_login
您想要的表格即可。否则,它已经在models.User
.
至于记录注销,您可以使用以下视图进行logout
查看:
from django.contrib.auth import logout
from django.utils import timezone
def logout_view(request):
logout(request)
logout_time = timezone.now()
# Now save your logout_time to the table you want
# Redirect to a success page.
或者,您可以利用 Django 的user_logged_out
信号(在 Django 1.3+ 中可用)来记录每次用户注销时的最后一次注销时间:
from django.contrib.auth.signals import user_logged_out
def update_last_logout(sender, user, **kwargs):
"""
A signal receiver which updates the last_logout date for
the user logging out.
"""
user.last_logout = timezone.now()
user.save(update_fields=['last_logout'])
user_logged_out.connect(update_last_logout)
您可以将其放在models.py
文件的底部。请注意,上面的解决方案假定您将扩展User
模型以包含last_logout
字段。如果你不确定你将如何去做,你可以从这里开始:Django Tip 5: Extending contrib.auth.models.User。
事实上,第二种方法正是 Django 更新last_login
的方式User
:models.py。
参考: