Django表单未显示,并且在单个视图中将多个表单呈现给模板

时间:2019-06-10 11:02:27

标签: python django django-forms django-templates

我有一个视图,该视图将2个表单呈现为模板,但是只有一个呈现,另一个不显示,也没有给我任何错误,但是当我在控制台中打印该表单时,可以看到该表单显示。

这是我的表单不显示的模型

class Organization(models.Model):
    name = models.CharField(max_length=255, null=True)

这是管理员的模型,我是从AbstractUSer继承的

class User(AbstractUser):
    is_user = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)

这是模型的形式

class OrganizationForm(forms.ModelForm):

    name = forms.CharField(max_length=255)

    class Meta:
        model = Organization
        fields = ['name']

这是管理员的表单

class AdminSignUpForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = User
        fields = ['username','email']


    def save(self, commit=True):
        user = super().save(commit=False)
        user.is_admin = True
        if commit:
            user.save()
        return user

这是我称之为多种形式的视图

def signup(request):
    if request.method == 'POST':
        adminForm = AdminSignUpForm(request.POST)
        orgForm = OrganizationForm(request.POST)
        if adminForm.is_valid() and orgForm.is_valid():
            adminForm.save()
            orgForm.save(commit=False)
            username = adminForm.cleaned_data.get('username')
            raw_password = adminForm.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect('myapp:home')
    else:

        adminForm = AdminSignUpForm()
        orgForm = OrganizationForm()

    print(orgForm)
    return render(request, 'registration/signup_form.html', {'OrgFrom': orgForm,'Adminform': adminForm})

这是我要呈现多种形式的模板

 <form enctype="multipart/form-data" method="post" >
        {% csrf_token %}
        <input type="hidden" name="next" value="{{ next }}">


        {{Adminform.as_p }}
        {{ OrgForm.as_p }}
        <button type="submit" class="btn btn-success">Sign up</button>
      </form>

我希望这两个表单都可以显示,但是只有Adminform可以显示,并且可以正常使用

1 个答案:

答案 0 :(得分:2)

有一个错字。您需要使用{{ OrgFrom.as_p }}而不是{{ Orgform.as_p }}