7

<input>HTML要素のプレースホルダー属性にフィールドラベルを使用するDRYの方法を考えています。私はを使用して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)

ただし、ラベルとプレースホルダーを別々に設定する必要はありません。これは、最終的にはさらに多くのフィールドがあり、非常に冗長になるためです。

あなたの提案は何ですか?

4

7 に答える 7

5

現在、ラベルを非表示にするには、以下のブートストラップ ヘルパー属性を使用します。

self.helper.form_show_labels = False

デフォルトは True に設定されています。フォームのフィールド ラベルをレンダリングするかどうかを決定します。

Field レイアウト オブジェクトを使用してプレースホルダーを定義する必要があります。

Field('query', placeholder='Search ...'),

于 2014-04-22T12:46:11.250 に答える
4

これを試して:

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=kwargs.pop('query_placeholder', 'random text')),
        )
        super(FilterForm, self).__init__(data, files, **kwargs)
于 2013-06-17T11:44:10.990 に答える
1

以下を使用して、フォーム フィールドに追加の属性を追加できます。

query = CharField(widget=forms.TextInput(attrs={'placeholder':'Search..'}),
                  max_length=50, label='', required=False)
于 2012-11-20T23:02:59.663 に答える
0

さらに制御したい場合は、ウィジェットフィールドがあります

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        widgets = {
            'comment': forms.Textarea(attrs={'rows': 6, 'placeholder': 'Enter your comments'}),
        }
        labels = {
            "private": "Keep Private",
        }
        exclude = ['response', 'display']
于 2018-06-13T14:57:36.733 に答える
-1

cssを使用してフィールドラベルを非表示にするだけになりました。少しハックですが、動作します。ただし、プレースホルダーを定義するために placeholder="your label" を使用しました。

于 2013-04-18T17:33:59.740 に答える