我有一个简单的Django表单:
class testForm(forms.Form):
list = forms.CharField()
def getItems(self):
#How do I do this? Access the data stored in list.
return self.list.split(",") #This doesn't work
列表表单字段存储csv数据值。从视图中的testForm的外部实例,我希望能够查看存储在表单字段中的.csv值列表。
答案 0 :(得分:2)
与其他人已经提到的一样,您需要使用表单的cleaned_data
字典属性和is_valid
方法。所以你可以这样做:
def getItems(self):
if not self.is_valid():
return [] # assuming you want to return an empty list here
return self.cleaned_data['list'].split(',')
您的方法不起作用的原因是表单字段不是典型的实例变量。希望这有帮助!
答案 1 :(得分:1)
为了获取表单数据,您通常在django中执行的操作将是这样的。
form = testForm(request.POST)
if form.is_valid:
# form will now have the data in form.cleaned_data
...
else:
# Handle validation error
...
如果您想自己进行一些数据格式化或验证,可以将其放在表单中的验证方法中。对于整个表单或表单字段。这也是让你的代码更干的好方法。
答案 2 :(得分:0)
这里有一些你需要知道的事情。
首先,通常在Python类方法中,您可以通过“self”对象访问属性。所以理论上你的功能应该是:
def get_items(self):
return self.list.split(",")
但是,对于Django表单,这不起作用。这是因为字段没有自己的值 - 该值仅在呈现时附加到字段,并且以不同的方式获取,具体取决于值是通过初始数据应用还是通过传入数据字典
如果您已经验证了表单(通过form.is_valid()
),则可以通过cleaned_data
词典获取表单:
return self.cleaned_data['list']
但是,如果list
因任何原因验证失败,则会失败。
答案 3 :(得分:0)
在表单上调用is_valid,然后访问cleaning_data字典。