首页 > 解决方案 > 我想在 django 中将用户活动添加到数据库

问题描述

我想将每个用户的登录和注销时间添加到数据库中

在我的模型中,我不知道如何创建它

模型.py

class User(models.Model):
    id = models.AutoField(primary_key=True, unique=True)
    name = models.CharField(max_length=20)
    username = models.CharField(max_length=20)
    password = models.CharField(max_length=20)
    timezone = models.CharField(max_length=32, choices=TIMEZONES,default='UTC')
    login_time = models.DateTimeField(default=datetime.now())
    logout_time = models.DateTimeField(default=datetime.now())
    def __str__(self):
        return self.name

每次用户登录或注销时,都会存储当前活动

视图.py

@csrf_exempt
def dash_board(request):
    if request.method == 'POST':
        if User.objects.filter(username=request.POST['username'], 
            password=request.POST['password']).exists():
            global user
            user = User.objects.get(username=request.POST['username'], 
            password=request.POST['password'])


            act = User.objects.get(id=user.id)
            act.login_time = datetime.now()
            act.save()
            return render(request, 'dash.html', {'user': user, })

        else:
            return render(request, 'index.html')


@csrf_exempt
def logout(request):
    if request.method == "POST":
        act = User.objects.get(id=user.id)
        act.logout_time=datetime.now()
        act.save()
        return render(request,'index.html')
    else:
        return HttpResponse("<h1>Error While LogOut..!!</h1>")

谁能帮我解决这个问题

标签: djangodjango-models

解决方案


您不创建 id 它默认存在 id=pk 当您检查用户用户名或 user.password 它在 django 中存在时,在用户名和密码 django 中相同

          class User(models.Model):
                 name = models.CharField(max_length=20)
                 login_time = 
                 models.DateTimeField(default=timezone.now)
                 logout_time = 
                 models.DateTimeField(default=timezone.now)
                 def __str__(self):
                     return self.name

推荐阅读