在django-crispy-forms中使用字段标签作为占位符

Pet*_*zuk 6 django twitter-bootstrap django-crispy-forms

我正在考虑使用DRY方式为我的<input>HTML元素的占位符属性使用字段标签.我正在使用django-crispy-forms.

现在我有:

class FilterForm(Form):

    query = CharField(max_length=50, label='', required=False)

    def __init__(self, data=None, files=None, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Field('query', placeholder='Search ...'),
        )
        super(FilterForm, self).__init__(data, files, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但是,我不希望单独设置标签和占位符,因为这最终会有更多的字段,而且非常冗长.

你有什么建议?

小智 15

使用此__init__方法可以实现DRY解决方案:

def __init__(self, *args, **kwargs):
    super(FilterForm, self).__init__(*args, **kwargs)
    helper = self.helper = FormHelper()

    # Moving field labels into placeholders
    layout = helper.layout = Layout()
    for field_name, field in self.fields.items():
        layout.append(Field(field_name, placeholder=field.label))
    helper.form_show_labels = False
Run Code Online (Sandbox Code Playgroud)


fko*_*sal 5

目前,可以使用下面的bootstrap helper属性来实现隐藏标签:

self.helper.form_show_labels = False

默认设置为True.它决定是否渲染或不形成字段标签.

您仍然需要使用Field布局对象定义占位符:

字段('query',占位符='搜索...'),