Django Объект истечения срока действия
Я использую систему активации для проверки электронной почты пользователя и теперь в модели active_code я хочу видеть только те объекты, которые были созданы 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, поэтому, конечно, коды, принятые час назад, будут приняты.