[解決済み] django テンプレートで "ブロック" を繰り返す方法
2022-06-10 07:55:37
質問
同じ {% ブロック %} を同じ django テンプレートで 2 回使いたいのです。このブロックをベーステンプレートに複数回表示させたいのです。
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
そして、それを拡張する。
# blog.html
{% extends 'base.html' %}
{% block title %}My Blog{% endblock %}
# pictures.html
{% extends 'base.html' %}
{% block title %}My Pictures{% endblock %}
# cats.html
{% extends 'base.html' %}
{% block title %}My Cats{% endblock %}
Django はブロックが一度だけ表示されることを望んでいるので、例外が発生します。
で TemplateSyntaxError が発生しました。
title' という名前の 'block' タグが複数回出現しています。 複数回表示される
手っ取り早い解決策は、ブロックを複製することです。 タイトル を タイトル1 と タイトル2 :
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
しかし、これは DRY の原則に反することになります。継承するテンプレートがたくさんあるので、非常に難しいですし、地獄に落ちるのも嫌なので;-)
この問題に対するトリックや回避策はありますか?すべてのコードを重複させることなく、テンプレート内で同じブロックを繰り返すにはどうしたらよいでしょうか。
どのように解決するのですか?
この場合、コンテキスト・プロセッサを使うのは行き過ぎだと思います。簡単にできるはずです。
#base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
として、その後に
# blog.html
{% extends 'base.html' %}
{% block content %}
<h1>{% block title %}My Blog{% endblock %}</h1>
Lorem ipsum here...
{% endblock %}
などなど...。DRY互換のようです。
関連
-
[解決済み] Djangoでファイルをアップロードする方法は?[クローズド]。
-
[解決済み] Django の管理者パスワードをリセットする方法は?
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み] FastCGIとDjangoを使用しているnginxのエラーログはどこで見ることができますか?
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] djangoでurls.pyから直接名前付きurlパターンにリダイレクトする?
-
[解決済み] Django はフォームが初期化された後にフィールドの値を設定します。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Django。"makemigrations "時に変更が検出されない。
-
[解決済み] Djangoでファイルをアップロードする方法は?[クローズド]。
-
[解決済み] Django の修正 管理者の複数形
-
[解決済み] Django South - テーブルはすでに存在する
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] Django は単一のモデルに対してデータをダンプしますか?
-
[解決済み] Djangoアプリの命名規則はありますか?
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] Django 1.9 の apps.py の目的は何ですか?