我想在django中将用户活动添加到数据库中
我想将每个用户的登录和注销时间添加到数据库中 在我的模型中,我不知道如何创建它 model.py我想在django中将用户活动添加到数据库中,django,django-models,Django,Django Models,我想将每个用户的登录和注销时间添加到数据库中 在我的模型中,我不知道如何创建它 model.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.CharFi
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
每次用户登录或注销时,都会存储当前活动
views.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>")
@csrf\u豁免
def仪表板(请求):
如果request.method==“POST”:
如果User.objects.filter(username=request.POST['username'],
password=request.POST['password'])。存在()
全球用户
user=user.objects.get(username=request.POST['username'],
password=request.POST['password'])
act=User.objects.get(id=User.id)
act.login\u time=datetime.now()
保存
返回呈现(请求'dash.html',{'user':user,})
其他:
返回呈现(请求'index.html')
@豁免
def注销(请求):
如果request.method==“POST”:
act=User.objects.get(id=User.id)
act.logout_time=datetime.now()
保存
返回呈现(请求'index.html')
其他:
返回HttpResponse(“注销时出错..!!”)
有人能帮我解决这个问题吗?您添加了默认值datetime.now(),它将这些列的值设置为迁移运行的时间。这就是为什么默认情况下,而不是当前时间,您将始终具有该固定值 像这样试试
from django.utils import timezone
login_time = models.DateTimeField(default=timezone.now)
logout_time = models.DateTimeField(default=timezone.now)
这将使用当前时间更新默认值您已添加datetime.now()的默认值,它将这些列的值设置为迁移运行时的时间。这就是为什么默认情况下,而不是当前时间,您将始终具有该固定值 像这样试试
from django.utils import timezone
login_time = models.DateTimeField(default=timezone.now)
logout_time = models.DateTimeField(default=timezone.now)
这将使用当前时间更新默认值您不创建id,默认情况下,id=pk存在 当您检查用户名或user.password时,用户名和密码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
您不创建id,默认情况下,id=pk存在 当您检查用户名或user.password时,用户名和密码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
activity=models.DateTimeField(login\u time=models.DateTimeField(default=timezone.now()),logout\u time=models.DateTimeField(default=timezone.now()),是否可以使用上述模型…?只需从now中删除()即可。之后,它将选择每个请求的当前时间,而不是固定的时间活动=models.DateTimeField(login\u time=models.DateTimeField(default=timezone.now()),注销\u time=models.DateTimeField(default=timezone.now()),是否可以使用上述模型…?只需从现在删除()。之后,它将根据每个请求选择当前时间,而不是固定时间