Создание пользователя при регистрации Django

В моем приложении я хочу, чтобы пользователь зарегистрировался, этот код не показывает ошибки, но он не сохраняется в базе данных; если у ребят есть какие-либо предложения, это было бы очень полезно. Причина, по которой я создаю этот метод, заключается в том, что у меня много других групп пользователей, поэтому я хочу создать модель базы данных, форму и представления таким образом. Заранее спасибо

Models.py

class User(AbstractUser):
ADDCHKS_ID=models.CharField(max_length=16,null=True)
is_active=models.BooleanField(default=False)

class justforfun(models.Model):
Name=models.CharField(max_length=100,null=True)
Roll_no=models.CharField(max_length=100,null=True)
User=models.ForeignKey(User,on_delete=models.CASCADE)

Forms.py

class just(forms.Form):
Name = forms.CharField(
    label='Name',
    widget=forms.TextInput(attrs={
        'class': 'form-control',
        'placeholder': 'Name',
        'rows':1
    })
)

Roll_no = forms.CharField(
    label='Roll-no',
    widget=forms.TextInput(attrs={
        'class': 'form-control',
        'placeholder': 'Roll_no',
        'rows':1
    })
)

views.py

def test2(request):
form=just()
if request.method=='POST':
    
    if form.is_valid():
        user21=User.ojects.create(
            username=form.data["Name"],
            password=str(random.random(000000000000,999999999999))
        )
        user21.save()
        just_data=justforfun.objects.create(
            user=user21,
            Name=form.data["Name"],
            Roll_no=form.data["Roll_no"]
        )
        just_data.save()
        
context={
    "form":form
}
return render(request, "just.html", context)

Форма может никогда не быть допустимой, так как она не ограничена. Вы должны построить форму с just(request.POST, request.FILES):

def test2(request):
    form = just()
    if request.method == 'POST':
        form = just(request.POST, request.FILES)
        if form.is_valid():
            user21 = User.ojects.create_user(
                username=form.data['Name'],
                password=str(random.random(000000000000, 999999999999)),
            )
            just_data = justforfun.objects.create(
                user=user21, Name=form.data['Name'], Roll_no=form.data['Roll_no']
            )
            return redirect('name-of-some-view')

    context = {'form': form}
    return render(request, 'just.html', context)

Примечание: Обычно Form или ModelForm заканчивается суффиксом …Form, чтобы избежать коллизии с именем модели, и чтобы было ясно, что мы работаем с формой. Поэтому, возможно, лучше использовать JustForm вместо just.


Note: In case of a successful POST request, you should make a redirect [Django-doc] to implement the Post/Redirect/Get pattern [wiki]. This avoids that you make the same POST request when the user refreshes the browser.

Вернуться на верх