我是Django的新手,我正在尝试开发一个简单的Django应用程序,该应用程序从用户处获取两个带有表单的数字,并使用这些数字执行一些操作并使用Http Response打印结果。我的代码如下:
forms.py
class SimpleForm(forms.ModelForm):
a = forms.IntegerField(label='first' )
b = forms.IntegerField(label='second' )
def result(self):
return doSomething(self.a, self.b)
views.py
class MainPage(FormView):
template_name = 'simple.html'
success_url = '/result/'
form_class = SimpleForm
def form_valid(self, form):
return HttpResponse(form.result())
但是,当我在localhost上运行此代码时,会出现类似
的错误SimpleForm object has no attribute 'a'
那么,问题可能是什么?如何获取用户输入以便在我的“结果”功能中使用它?
提前致谢...
答案 0 :(得分:4)
要访问数据,您需要使用form.data
:
def result(self):
return doSomething(self.data['a'], self.data['b'])
如果您在致电form.is_valid()
之前致电result
,则还可以使用cleaned_data
。 (因为OP正在使用FormView.form_valid
,所以会自动调用它)
def result(self):
return doSomething(self.cleaned_data['a'], self.cleaned_data['b'])
答案 1 :(得分:1)
您form.a
是IntergerField()
,而不是结果。您需要阅读表单的cleaned_data
dict才能访问表单字段的值。 Cleaned_data documentation
class SimpleForm(forms.ModelForm):
a = forms.IntegerField(label='first' )
b = forms.IntegerField(label='second' )
def result(self):
return doSomething(self.cleaned_data['a'], self.cleaned_data['b'])