Skip to main content
 首页 » 编程设计

python之为什么 Django 不承认我的类变量

2025年02月15日21del

我在 Django 项目(Django 1.11,Python 3.5)中定义了以下表单类,但是当我执行 python3 manage.py runserver 时,我收到一个

 NameError: name 'month_names' is not defined 

class MonthForm(forms.Form): 
    month_names = [ 
        'January', 
        'February', 
        'March', 
        'April', 
        'May', 
        'June', 
        'July', 
        'August', 
        'September', 
        'October', 
        'November', 
        'December' 
        ] 
    MONTH_CHOICES = [(i + 1, month_names[i]) for i in range(len(month_names))] 
    month = forms.ChoiceField(choices=MONTH_CHOICES, label='Month', 
                              widget=forms.Select()) 

我不明白为什么这行不通。我注意到,如果我将初始的 month_names 赋值移动到类定义之外,它就会起作用。任何解释将不胜感激。提前谢谢你。

请您参考如下方法:

表单 metaclass - DeclarativeFieldsMetaclass - 不允许您在类上创建(并通过扩展绑定(bind))不是字段的任意对象(即 django.forms.fields.Field 的实例)。

您必须在 Form 子类之外声明这样的任意对象。