Django的月份列表

JPC*_*JPC 2 python django

我正在尝试使用带有月份列表的选择表单,但我似乎无法正确发布它.

形成:

   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)

mik*_*iku 6

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