Я использую систему активации для проверки электронной почты пользователя, и теперь в модели active_code я вижу только объекты, созданные 120 секунд назад. Но он принимает даже объекты, созданные более 120 секунд назад. Помоги мне, пожалуйста!

def Activation_page(request):
if request.method == "POST":
    form = forms.Active(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        past_seconds = timezone.now().date() - timedelta(seconds=120)
        if active_code.objects.filter(email = request.session['email'] , code = data['num'] , expiration__gte=past_seconds).exists() :
            try:
                b = User.objects.get(email = request.session['email'])
                b.is_active = True
                b.save()
                return redirect('home:loginveiw')
            except:
                messages.error(request , 'error')
        else:
            messages.error(request , 'error_2')
else:
    form = forms.Active()
return render(request , 'home/activation.html' , {'form' : form})     
отвечать

Я думаю, date()что неправильно использовать функцию. Вы должны удалить это и использовать только timezone.now() - timedelta(seconds=120). См . https://www.geeksforgeeks.org/python-datetime-timedelta-function/ .

При использовании date()функции вы устанавливаете сегодняшнее время, но в 00:00, поэтому, конечно, принимаются коды часовой давности.