Создание пользователя при регистрации 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.