【发布时间】:2015-10-12 20:49:24
【问题描述】:
我在我的 Django 项目中使用表单,我想指定在我的表单中使用的小部件的一些属性,但我无法弄清楚如何将 attrs 字典传递给小部件。
view.py:
form_schedule_start = WINDOW_Schedule_Form(section_label=" Start",required=True,initial=scheduleStart,attributes={'class':"form-control",'placeholder':".col-md-4"})
表格:
class WINDOW_Schedule_Form(forms.Form):
def __init__(self,*args,**kwargs):
section_label = kwargs.pop('section_label')
initial_value = kwargs.pop('initial')
required_value = kwargs.pop('required')
attributes = kwargs.pop('attributes')
super(WINDOW_Schedule_Form,self).__init__(*args,**kwargs)
self.fields['WINDOW_Schedule'].label=mark_safe(section_label)
self.fields['WINDOW_Schedule'].initial=initial_value
self.fields['WINDOW_Schedule'].required=required_value
self.fields['WINDOW_Schedule'].attrs=attributes
WINDOW_Schedule = forms.CharField(widget=forms.TextInput())
通常你会这样做
WINDOW_Schedule = forms.CharField(widget=forms.TextInput(attrs={'class':"form-control text-center",'placeholder':".col-md-8"}))
但我希望能够在我的views.py 中指定'class' 和'placeholder' 属性。
我不断收到attributes 未定义的错误。谁能告诉我我做错了什么?
【问题讨论】:
-
你从哪里得到错误?在调用
kwargs.pop('attributes')的地方? -
@Alain 是的,我知道
kwargs.pop('attributes')被调用的地方。 -
这很有趣。根据字典 pop() 函数的定义(参见docs.python.org/2/library/stdtypes.html),当您执行
required_value = kwargs.pop('required')时应该会引发一个键错误,因为没有“必需”键并且您没有分配默认值。跨度> -
@Alain 我认为这是我的复制/粘贴错误。我在我的代码中定义了
required- 请参阅更新后的问题。
标签: django