gpt4 book ai didi

python - Django 发布时间到数据库

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:43 25 4
gpt4 key购买 nike

我是 Django 的新手,正在尝试构建一个博客来记录用户登录时间和用户注销时间。

我猜这会出现在 View 中,但我不知道如何解决这个问题。

我将如何发送用户登录数据库的时间?

任何提示和指导将不胜感激。

最佳答案

您可以使用 auth.model.User.last_login假设您使用的是 Django 的内置身份验证,获取用户的上次登录时间:

user = User.objects.get(username='johndoe')
last_login = user.last_login

如果您想将此数据存储在 User 表之外的其他地方,您只需将此 last_login 插入到您想要的表中即可。否则,它已经在 models.User 中。

至于记录注销,您可以使用以下 View 作为您的logout View :

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 为 User 更新 last_login 的方式:models.py .


引用:

  1. Official Django doc on last_login
  2. Extending contrib.auth.models.User

关于python - Django 发布时间到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com