Django does not inherit the auth_user custom last_login field

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, })

Guess you like

Origin blog.csdn.net/qq_31910669/article/details/115250264