我正在尝试使用带有月份列表的选择表单,但我似乎无法正确发布它.
形成:
class MonthForm(forms.Form):
months = [('January','January'),
('February','February'),
('March','March'),
('April','April'),
('May','May'),
('June','June'),
('July','July'),
('August','August'),
('September','September'),
('October','October'),
('November','November'),
('December','December'),]
month = forms.ChoiceField(months)
Run Code Online (Sandbox Code Playgroud)
视图:
def table_view(request):
if request.method == 'POST':
month = MonthForm(request.POST).cleaned_data['month']
print month
Run Code Online (Sandbox Code Playgroud)
我一直收到这个错误:
'MonthForm' object has no attribute 'cleaned_data'
Run Code Online (Sandbox Code Playgroud)
cleaned_data仅在使用表单验证表单后才会显示该属性is_valid().
只需将您的代码更改为
def table_view(request):
if request.method == 'POST':
form = MonthForm(request.POST)
if form.is_valid():
print form.cleaned_data['month']
Run Code Online (Sandbox Code Playgroud)
在内部,如果检测到任何错误,该cleaned_data属性将被删除(参见forms/forms.py第270行),因此无法访问:
if self._errors:
delattr(self, 'cleaned_data')
Run Code Online (Sandbox Code Playgroud)
另见:http://docs.djangoproject.com/en/dev/topics/forms/?from = olddocs #processing-the-data-from-a-form