【问题标题】:Django form not displaying with Multiple forms rendered to a template in a single viewDjango 表单不显示在单个视图中呈现给模板的多个表单
【发布时间】:2019-06-10 11:02:27
【问题描述】:

我有一个将 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 并且它不会给我带来任何错误

【问题讨论】:

    标签: python django django-forms django-templates


    【解决方案1】:

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

    【讨论】:

    • 所以 AdminSignUpForm 没有呈现?
    • AdminSignUpForm 正在显示,就像我在问题中所说的那样,它只是没有显示的 OrganizationForm
    • 在这种情况下,您的 html 中仍然存在拼写错误。您正在尝试执行{{ OrgForm.as_p }},但从您的角度来看,您正在上下文中发送OrgFrom
    • 我怀疑这是问题所在,因为 .as_p 只是在 p 标签中呈现表单的扩展,尽管它适用于 AdminForm
    • 如果 OrgForm 在上下文中不存在,您如何访问它?
    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2015-11-27
    • 2011-10-11
    • 2012-11-11
    • 2019-04-25
    • 2013-06-18
    相关资源
    最近更新 更多