用户注册后,他们将被重定向到主页。如果这是他们的第一次登录,我想显示一个div,但是如果不是他们的第一次,我不想显示此div。目前,我依靠date_joined
和last_login
进行此检查。
但是,这仅检查日期,而不检查时间。因此,div仍会出现直到日期更改。我只希望div显示一次。这是用户第一次登录。
到目前为止,这是我的代码: views.py:
def home(request):
context={}
user = request.user
if user.last_login.date() == user.date_joined.date():
context['isFirstTime'] = 'isFirstTime'
else:
pass
return render(request, 'home.html', context)
模板:
{% if isFirstTime %}
<div style="width: 300px; height: 300px; background-color: green;">
</div>
{% endif %}
有人知道我可以如何更改它,以便它可以使用当前时间而不是当前日期。这样,仅在用户首次登录时才显示div。有人知道解决方案吗?谢谢。 date_joined
和last_login
也是存储在数据库中的日期时间对象。
答案 0 :(得分:2)
考虑使用属性last_login
创建一个date_joined
模型,而不是使用UserProfile
和is_first_login
,您可以详细了解UserProfile
{{3} }。
在您的模型中。py:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
is_first_login = models.BooleanField(default=True)
您认为:
def home(request):
context={}
user = request.user
if user.profile.is_first_login:
context['isFirstTime'] = 'isFirstTime'
user.profile.is_first_login = False
user.profile.is_first_login.save()
else:
pass
return render(request, 'home.html', context)
答案 1 :(得分:1)
if (user.last_login - user.date_joined).total_seconds() < 5:
... # do your code
user.last_login = datetime.datetime.now()
user.save()
last_login
和date_joined
都是DateTime实例,因此您需要直接比较它们。但是我建议您添加一些增量值,例如在示例中需要5秒才能确定