python - Django AttributeError:“ InterestsForm”对象没有属性“ _errors”

我试图使用django表单来允许django用户输入他们最喜欢的三个兴趣。该错误在模板呈现过程中出现,并显示{{form.as_ul}}
代码如下:
注册兴趣.html

{% block content %}

<br><br>
<h1>Choose the 3 things that interest you most!</h1>

<form method="post" action="/reg_interests/">
    {% csrf_token %}
    {{form.as_ul}}
    <br>
    <p class="submit"><input  class="btn btn-default" type="submit" name="commit" value="Continue"></p>
</form>

{% endblock %}

视图.py
def reg_interests_view(request):
    if request.POST:
        form = InterestsForm(request.POST, request=request)
        if form.is_valid():
            form.save(request)
            return redirect('/reg_video/')

    args = {}
    args['form'] = InterestsForm(request=request)

    return render(request, 'login/reg_interests.html', args)

表单.py
class InterestsForm(RequestModelForm):
    interest1 = forms.ChoiceField(choices=[(1, "Option 1"), (2, "Option 2")])
    interest2 = forms.ChoiceField(choices=[(1, "Option 1"), (2, "Option 2")])
    interest3 = forms.ChoiceField(choices=[(1, "Option 1"), (2, "Option 2")])

    class Meta:
        model = Interest
        fields = ('interest1', 'interest2', 'interest3')

    def __init__(self, request):
        self.user = request.user

    def save(self, commit=True):
        interest = super(InterestsForm, self).save(commit=False)
        interest.user = self.user
        interest.interest1 = self.cleaned_data['interest1']
        interest.interest2 = self.cleaned_data['interest2']
        interest.interest3 = self.cleaned_data['interest3']

        if commit:
            interest.save()

        return interest

我认为表单有问题,但我不知道如何或为什么需要定义_errors。Django自己不应该处理这个问题吗?如果不是,我如何定义_errors


最佳答案:

这段代码根本不可能工作,因为您重写了窗体的__init__方法,因此a)您只接受了request参数,而不接受窗体所期望的任何其他东西,如datainitial-和b)您从不调用超类init方法来初始化窗体代码其余部分所期望的东西你需要保留签名并打电话给super。

def __init__(self, *args, **kwargs):
     request = kwargs.pop('request')
     self.user = request.user
     super(InterestsForm, self).__init__(*args, **kwargs)

译文:来源   文章分类: python django django-1.10

相关文章:

python - 禁止Python HTTP重定向请求

python - 有什么优雅的方法可以在python中抽象出重复的异常处理?

python - 用两个三角形定义菱形

python - 使用xlsxwriter从Excel删除行/列

python - Python多重继承

python - Django'bool'对象在模型保存时不可迭代

python - 在扭曲矩阵日志中更改时间格式

python - 获取列表的熊猫列中元素频率的有效方法

python - 为什么我不能导入自己创建的Python包?

python - BaseOperator.xcom_pull中的上下文参数是什么