Skip to main content
 首页 » 编程设计

python之Django: "Form object has no attribute..."错误

2025年05月04日51shanyou

我是 Django 的新手,我正在尝试开发一个简单的 Django 应用程序,该应用程序使用表单从用户那里获取两个数字,并对这些数字进行一些操作,然后使用 Http 响应打印结果。我的代码如下:

表单.py

class SimpleForm(forms.ModelForm): 
 
    a = forms.IntegerField(label='first' ) 
    b = forms.IntegerField(label='second' ) 
 
    def result(self): 
        return doSomething(self.a, self.b) 

View .py

class MainPage(FormView): 
    template_name = 'simple.html' 
    success_url = '/result/' 
    form_class = SimpleForm 
 
    def form_valid(self, form): 
        return HttpResponse(form.result()) 

但是,当我在我的本地主机上运行这段代码时,它给出了这样的错误

SimpleForm object has no attribute 'a' 

那么,问题是什么?如何获取用户输入以便在我的“结果”函数中使用它?

提前致谢...

请您参考如下方法:

要访问数据,你需要使用form.data:

def result(self): 
    return doSomething(self.data['a'], self.data['b']) 

如果您在调用result 之前调用了form.is_valid(),您也可以使用cleaned_data。 (因为OP正在使用FormView.form_valid,所以会自动调用)

def result(self): 
    return doSomething(self.cleaned_data['a'], self.cleaned_data['b'])