注册后的表格未提交Django
要完成注册,我希望用户填写二级表单。但是,二级表单未提交。我认为用户在注册时没有得到认证,然后第二个表单没有提交。登录似乎不起作用注册后的表格未提交Django,django,django-forms,django-authentication,Django,Django Forms,Django Authentication,要完成注册,我希望用户填写二级表单。但是,二级表单未提交。我认为用户在注册时没有得到认证,然后第二个表单没有提交。登录似乎不起作用 # the form in this view that's not submitting def agreements(request): if request.method == "POST": form = AgreementsForm(request.POST) if form.is_valid():
# the form in this view that's not submitting
def agreements(request):
if request.method == "POST":
form = AgreementsForm(request.POST)
if form.is_valid():
user = request.user
agree = form.save(commit=False)
agree.save()
else:
raise ValidationError("Form is not valid. Try Again.")
else:
form = AgreementsForm()
return render(request, 'agree.html', {'form': form})
以下是协议的forms.py:
class AgreementsForm(forms.ModelForm):
non_ent=forms.BooleanField(label='kdmkl kdldsk')
agreement1=forms.BooleanField(label='dmklsd. lkdfmld')
class Meta:
model = Agreements
fields = ('non_ent', 'agreement1')
def save(self, commit=True):
agree = super(AgreementsForm, self).save(commit=False)
agree.non_ent = self.cleaned_data['non_ent']
agree.agreement1 = self.cleaned_data['agreement1']
if commit:
agree.save()
return agree
以下是初始注册视图:
# register view which submits, but I think it's not authenticating the user
def registration(request):
if request.method == "POST":
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = True
user.save()
login(request, user, backend='django.contrib.auth.backends.ModelBackend')
return redirect('agreements_page')
else:
raise ValidationError("Form is not valid. Try Again.")
else:
form = CustomUserCreationForm()
return render(request, 'register.html', {'form': form})
协议模式:
class Agreements(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,blank=True, null=True)
non_ent = models.BooleanField(default=False, blank=True, null=True)
agreement1 = models.BooleanField(default=False, blank=True, null=True)
date = models.DateTimeField(default=datetime.now, blank=True, null=True)
def __str__(self):
return f'{self.user} ({self.date})'
您需要先验证用户身份才能登录: def注册请求:
if request.method == "POST":
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = True
user.save()
# authenticate user first
user = authenticate(request,username=form.cleaned_data['username'],password=form.cleaned_data['password'])
if user:
login(request, user)
return redirect('agreements_page')
然后在第二个表单中,您可以像这样保存request.user。
我希望您在协议模型中与用户建立一对一的关系
您的协议模型是什么?另外,您希望用户使用用户名和密码进行身份验证,然后使用“不验证”login@Moha-我进行了身份验证,但仍然不起作用,我将添加协议模型。谢谢您将尝试此方法。尝试此方法,但仍然出现以下错误:无法分配:协议。用户必须是用户实例。是否有一种简单的方法将我的外键字段保存为一对一。迁移不起作用。然后我尝试删除我过去的所有迁移,但仍然没有改变关系。
form = AgreementsForm(request.POST)
if form.is_valid():
agree = form.save(commit=False)
agree.user = request.user
agree.save()