The original link is on my personal blog: http://liboer.top/articles/detail/8/
New fields in the userinfo table
last_login = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name='最后登录时间')
models.py
class UserInfo(models.Model):
"""用户信息表"""
username = models.CharField(max_length=16, verbose_name='姓名')
password = models.CharField(max_length=32, verbose_name='密码')
email = models.EmailField()
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False, null=True, blank=True)
avatar = models.FileField(upload_to='avatars/', default=None)
last_login = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name='最后登录时间')
class Meta:
verbose_name_plural = '用户信息表'
def __str__(self): # __unicode__
return self.username
Add time to the login logic in view.py
Just after the authentication is successful, update the value of the last_login field to the current time.
# 更新最后登录时间
user_obj_set.update(last_login=datetime.datetime.now())
LoginView
class LoginView(View):
def post(self, request):
# 初始化返回值
res = {
"code": 500}
user = request.POST.get('username')
pwd = request.POST.get('password')
# 判断用户名和密码
user_obj_set = models.UserInfo.objects.filter(username=user, password=set_md5(pwd))
user_obj = user_obj_set.first()
if user_obj:
res['code'] = 200
# 更新最后登录时间
user_obj_set.update(last_login=datetime.datetime.now())
# 把当前用户id添加到session中
request.session['user_id'] = user_obj.id
return JsonResponse(res)
The message interface shows the people who have recently logged in
Just sort by the value of the last_login field in reverse order, here only the first 20 users are shown
least_users = models.UserInfo.objects.all().order_by('-last_login')[:20]
class MessagesView(View):
def get(self, request):
user_id = request.session.get('user_id')
# 文章分类
categories = models.Category.objects.all()
# 文章专栏
columns = models.Column.objects.all().order_by('-weights')
if user_id:
cur_user_name = models.UserInfo.objects.get(id=user_id)
else:
cur_user_name = None
least_users = models.UserInfo.objects.all().order_by('-last_login')[:20]
# 所有评论
comment_obj = models.Comment.objects.all().order_by('-add_time')[:10]
comment_list = self.build_msg(comment_obj)
ret = self.get_comment_list(comment_list)
return render(request, 'messages.html',
{
'cur_user_name': cur_user_name, "categories": categories, 'columns': columns,
'least_users': least_users, 'ret': ret, })