【问题标题】:Passing widget attributes dictionary into Django Form将小部件属性字典传递给 Django 表单
【发布时间】: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


【解决方案1】:
This Code May Help You Out       
class ContactForm(ModelForm):
    class Meta:
      model = Contact
      created = MyDatePicker()

class Uniform(forms):
  def __init__(self, *args, **kwargs):
      attrs = kwargs.pop("attrs",{})
      attrs["class"] = "span3"
      kwargs["attrs"] = attrs
      super(Uniform, self).__init__(*args, **kwargs)

class MyDatePicker(Uniform,forms.DateInput)
  def __init__(self, *args, **kwargs):
      attrs = kwargs.pop("attrs",{})
      attrs["class"] = "datepick" 
      attrs["id"] =kwargs.get('datetag', '')
      kwargs["attrs"] = attrs
      super(MyDatePicker, self).__init__(*args, **kwargs)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
相关资源
最近更新 更多