[解決済み] Django のフォームフィールドの値をテンプレートに表示するには?
2023-06-05 13:35:27
質問
Eメールプロパティを持つフォームがあります。
を使用する場合
{{ form.email }}
を使う場合、Django は入力タグの value 属性に以前の値をレンダリングしたままです。
<input type="text" id="id_email" maxlength="75" class="required"
value="[email protected]" name="email">
私はinputタグを自分でレンダリングしたい(いくつかのJavaScriptコードとエラー発生時のエラークラスを追加するため)。例えば、これは私のテンプレートで、代わりに
{{ form.email }}
:
<input type="text" autocomplete="on" id="id_email" name="email"
class="email {% if form.email.errors %} error {% endif %}">
しかし、これでは誤った値(
[email protected]
を表示することはできません。
テンプレートでフィールドの値を取得するにはどうすればよいですか?
どのように解決するのですか?
Jens が提案した解決策は正しいです。 しかし、モデルフォームを初期化する際に インスタンス (下の例) を使ってモデルフォームを初期化すると、django はデータを取り込みません。
def your_view(request):
if request.method == 'POST':
form = UserDetailsForm(request.POST)
if form.is_valid():
# some code here
else:
form = UserDetailsForm(instance=request.user)
そこで、初期データを投入するModelFormの基底クラスを自作してみました。
from django import forms
class BaseModelForm(forms.ModelForm):
"""
Subclass of `forms.ModelForm` that makes sure the initial values
are present in the form data, so you don't have to send all old values
for the form to actually validate.
"""
def merge_from_initial(self):
filt = lambda v: v not in self.data.keys()
for field in filter(filt, getattr(self.Meta, 'fields', ())):
self.data[field] = self.initial.get(field, None)
すると、シンプルなビューの例はこのようになります。
def your_view(request): if request.method == 'POST':
form = UserDetailsForm(request.POST)
if form.is_valid():
# some code here
else:
form = UserDetailsForm(instance=request.user)
form.merge_from_initial()
関連
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] Django - テンプレートのforループで番号を反復する
-
[解決済み】AngularJSとDjangoの組み合わせ - テンプレートタグの衝突
-
[解決済み】Djangoでモデルインスタンスをシリアライズする方法は?
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] Django ORM のクエリセットに対応する SQL クエリを表示するには?
-
[解決済み] Django ManyToMany filter()
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オペレーショナルエラーです。1050 解決
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
Django の ForeignKey パラメータの使用法
-
django のクエリセット操作
-
[解決済み] Django vs. Model View Controller [終了しました]。
-
[解決済み] Djangoでファイルをアップロードする方法は?[クローズド]。
-
[解決済み] Django で現在ログインしているユーザのユーザ ID を取得する方法は?
-
[解決済み] django : select_related と get_object_or_404 を一緒に使用する。
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] Djangoで異なる設定でUnitテストを行うには?