Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8945

Django テンプレートでformを使用するときに入力フォームの大きさを変更する方法

$
0
0
テンプレートの{{ form.item_name }}で項目ごとに配置した入力フォームの大きさを変えたいってなりました。 その方法を調べたので備忘も兼ねてシェアします。 やりたいこと EmailとPasswordの入力フォームの幅と高さを変更したい。 スクリーンショット 2022-03-06 14.41.40 ※ 前提として、以下のように入力フォームを表示させている場合のお話になります。 user_form.html <form method="post" class="register-form"> {% csrf_token %} {# 各入力項目 #} <div class="email"> {{ form.email }} </div> <div class="password"> {{ form.password }} </div> {# 登録ボタン #} <input type="submit" class="register-button" value="Register"> </form> どうやってサイズを変更するか 各コンポーネントの大きさの調整はCSSで行っています。 今の状態だと、EmailとPasswordの入力フォーム自体にクラスがないので、CSSで対象のコンポーネントを指定できません。 なので、form.emailやform.passwordにクラスを追加します。 そこで何をするかというと、forms.pyでemailとpasswordにクラスを追加する処理を追記します。 具体的には、下のコードの'class': 'input-field'を、フィールドの設定に追加します。 forms.py class UserForm(forms.ModelForm): """ ユーザー登録/更新用のフォーム """ class Meta: model = User fields = ['email', 'password'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['email'].widget.attrs = {'placeholder': 'Email', 'class': 'input-field'} self.fields['password'].widget.attrs = {'placeholder': 'Password', 'class': 'input-field'} これで、emailとpasswordに「input-field」というクラスが追加されました。 あとは通常通り、CSSで上記クラスに対して幅と高さを指定します。 users.css .input-field { width: 400px; height: 40px; } 画面を確認すると、Beforeの状態からAfterの状態になりました! スクリーンショット 2022-03-06 14.41.40 forms.pyでできることってバリデーションの調整だけじゃないんだ、というのを学びました。今後も活用していきたいです。

Viewing all articles
Browse latest Browse all 8945

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>