Моя страница входа и регистрации не работает, когда я нажимаю кнопку, и моя конфигурация URL-адреса хорошаяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Моя страница входа и регистрации не работает, когда я нажимаю кнопку, и моя конфигурация URL-адреса хорошая

Сообщение Anonymous »

Я создаю проект django и постоянно получаю эту ошибку: - django.db.utils.IntegrityError: нулевое значение в столбце «id» отношения «проверка» нарушает ненулевое ограничение
DETAIL: неверная строка содержит (null, 7, 839510, 0, 2024-10-29 19:51:34.057435+00, f, null).
Я думаю, это как-то связано с моей базой данных, я использую pgadmin

Код: Выделить всё

views.py

from django.shortcuts import redirect, render
from django.contrib.auth import login, authenticate
from django.core.mail import send_mail
from django.utils import timezone
from .forms import UserRegistrationForm, UserLoginForm, VerificationForm
from .models import Validation

# User Registration View
def register_view(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
token = random.randint(100000, 999999)
Validation.objects.create(user=user, token=token,
expired=timezone.now() + timezone.timedelta(hours=1))
send_mail(
'Your Verification Code',
f'Use this code to verify your account: {token}',
settings.DEFAULT_FROM_EMAIL,
[user.email],
)
return redirect('verification')
else:
form = UserRegistrationForm()
return render(request, 'registration/register.html', {'form': form})

# Verification View
def verify_view(request):
if request.method == 'POST':
form = VerificationForm(request.POST)
if form.is_valid():
token = form.cleaned_data['token']
try:
validation = Validation.objects.get(user=request.user)
if validation.token == int(token) and validation.expired >= timezone.now():
validation.validation_status = True
validation.save()
return redirect('profile')
else:
# Handle case where verification fails
except Validation.DoesNotExist:
pass
else:
form = VerificationForm()
return render(request, 'registration/verify_email.html', {'form': form})models.py

# Create your models here.

class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
status = models.CharField(max_length=50, null=True, blank=True)
company_name = models.TextField(null=True, blank=True)
logo = models.ImageField(upload_to='logos/', null=True, blank=True)
validation = models.BooleanField(null=True, blank=True)

def __str__(self):
return self.user.username

class Validation(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)  # Links to User model
token = models.BigIntegerField()
tries = models.IntegerField(default=0)
expired = models.DateTimeField(default=timezone.now)  # Set default to current time
validation_status = models.BooleanField(default=False)
validation_date = models.DateTimeField(null=True, blank=True)

def save(self, *args, **kwargs):
if not self.id:
self.expired = timezone.now() + timedelta(minutes=10)
super().save(*args, **kwargs)

def check_expiry_and_increment_tries(self):
if timezone.now() > self.expired:
self.tries += 1
self.expired = timezone.now() + timedelta(minutes=10)  # Reset expiry time
self.save()

def generate_verification_code(self):
self.token = uuid.uuid4().int >>  64  # Generate a large integer token
self.expired = timezone.now() + timedelta(minutes=10)
self.save()

def is_verification_code_valid(self):
return timezone.now() 

Подробнее здесь: [url]https://stackoverflow.com/questions/79144149/my-login-and-register-page-doesnt-work-when-i-click-the-button-and-my-url-config[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»