djangoでformにplaceholderを追加する方法(Meta内)

2022年5月3日

djangoでformにplaceholderを追加する方法(Meta内)

デザインはなるべくラベルを使用せずに「placeholder」だけで完結させてシンプルにしたいと思っている今日この頃です。
djangoはフォームをインスタンス化する機能が備わっていてスッキリかける反面なかなか慣れるまで大変に感じます。
今回はHTML側ではなくforms.pyでplaceholderを設定してみたいと思います。

出来上がりはこんな感じです。

参考:
  Django、モデルフォームのウィジェットを変更する方法について
  Adding an attribute to the <input> tag for a django ModelForm field
  Django、モデルフィールド→フォームフィールド一覧表

プログラム

「from django import forms」のインポートが必要なので忘れないでしてあげましょう。


from django.forms import ModelForm
from django import forms
from .models import UserInfo
class UserInfoForm(ModelForm):
    class Meta:
        model = UserInfo
        fields = ('consumer_key', 'consumer_secret', 'access_token', 'access_secret', 'message')
        widgets = {
            'consumer_key'   : forms.TextInput(attrs={'placeholder': 'consumer_key'}),
            'consumer_secret': forms.TextInput(attrs={'placeholder': 'consumer_secret'}),
            'access_token'   : forms.TextInput(attrs={'placeholder': 'access_token'}),
            'access_secret'  : forms.TextInput(attrs={'placeholder': 'access_secret'}),
            'message'        : forms.Textarea (attrs={'placeholder' : '[username]様\n突然のメール失礼いたします。\n...\n...'}),
        }

ちなみにCSSの「class」の指定もできますがこちらの方がおすすめです。

2022年5月3日