Django没有继承auth_user自定义last_login字段

原文链接在我的个人博客:http://liboer.top/articles/detail/8/

在userinfo表中新增字段

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

在view.py中的登录逻辑中添加时间

只需在认证成功后,把last_login字段的值更新为当前时间即可

# 更新最后登录时间
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)

留言界面显示最近登录的人

只需按last_login字段的值逆序排列即可,这里只显示了前20个用户

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, })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大聪明Smart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值