Python Django窗体未在视图或shell中呈现

Python Django窗体未在视图或shell中呈现,python,django,forms,Python,Django,Forms,有很多问题,所以问几乎相同的问题,但似乎每个人都有一个不同的问题在它的核心。考虑到这一点,我梳理了过去几年的问题,但没有找到解决我自己独特问题的方法。我想我只需要一双比我更有经验的眼睛 我正在尝试在配置文件信息编辑页面上呈现表单。表单应该从两个模型中提取,一个是主身份验证用户,另一个是通过OneTONE连接的概要文件模型。问题是表单不仅不能用HTML呈现,而且在manage.py shell提示符中也没有生命迹象。首先,我将向您展示表单本身,然后我将展示提示符的输出。我不会发表我的观点,除非出于

有很多问题,所以问几乎相同的问题,但似乎每个人都有一个不同的问题在它的核心。考虑到这一点,我梳理了过去几年的问题,但没有找到解决我自己独特问题的方法。我想我只需要一双比我更有经验的眼睛

我正在尝试在配置文件信息编辑页面上呈现表单。表单应该从两个模型中提取,一个是主身份验证用户,另一个是通过OneTONE连接的概要文件模型。问题是表单不仅不能用HTML呈现,而且在
manage.py shell
提示符中也没有生命迹象。首先,我将向您展示表单本身,然后我将展示提示符的输出。我不会发表我的观点,除非出于简单的考虑被问到,因为我暂时排除这些观点

forms.py:

from django import forms
from django.contrib.auth.models import User
from .models import People, Pick # this is actually for a later forms, which don't work either

class ProfileForm(forms.Form):
    class Meta:
        model = User
        fields = ['people__usr_img', 'email', 'password', 'people__middle_name', 'people__gender', 'people__preference',]
和我的shell输出:

$ > python manage.py shell
...Python meta stuff...

>>> from apps.catch.forms import ProfileForm
>>> ProfileForm()
<ProfileForm bound=False, valid=Unknown, fields=()>
>>> form = ProfileForm()
>>> form.as_p()
''
>>> for field in form:
...     print("Field")
... 
>>> 
$>python manage.py shell
…Python元东西。。。
>>>从apps.catch.forms导入ProfileForm
>>>ProfileForm()
>>>form=ProfileForm()
>>>表格.as_p()
''
>>>对于表单中的字段:
...     打印(“字段”)
... 
>>> 

在我看来,这个问题的核心是
fields=()
声明。我在
Meta
中明确定义了字段,为什么这里什么都没有?应该提到的是,我对我的其他表单也有同样的问题。

鉴于您正在设计的表单是与您的用户模型交互的,如果您使用表单.ModelForm而不是表单.form,它将对您有效。

鉴于您正在设计与您的用户模型交互的表单,如果您使用forms.ModelForm而不是forms.form,它将对您有效。

在模板中,我们使用
{form.as\p}
,但在交互式shell中
form.as\p()
@slackmart谢谢。我已经更新了问题的shell代码部分。好吧,我想您应该使用
forms.ModelForm
而不是
forms.Form
。ModelForm类允许您使用元类覆盖目标模型(即用户)。它还强制您指定具有所需字段的元组。请注意,这些字段必须与用户字段匹配。在模板中,我们使用
{{form.as\p}
,但在交互式shell中使用
form.as\p()
@slackmart,谢谢。我已经更新了问题的shell代码部分。好吧,我想您应该使用
forms.ModelForm
而不是
forms.Form
。ModelForm类允许您使用元类覆盖目标模型(即用户)。它还强制您指定具有所需字段的元组。请注意,这些字段必须与用户字段匹配。这似乎是我在这个特殊情况下寻找的答案。它仍然不能解决我的其他表单的问题,但我没想到你会解决一些我没有问的问题:)谢谢你,拉杰什。这似乎是我在这个特殊情况下寻找的答案。它仍然不能解决我的其他表单的问题,但我没想到你会解决一些我没有问到的问题:)谢谢你,Rajesh。