0

だから私はdjangoを使ってアプリケーションを構築しています。私のチームの何人かは、ブロック/拡張パラダイムに従うのではなく、テンプレートにインクルードを使用する必要があると考えています。彼らは次のように主張しています。

  • 継承は、将来のメンテナにとってあまりにも多くのロジックです
  • インクルードはフォローするのがはるかに簡単です
  • 今後のメンテナンスを「django プログラマー」に限定すべきではありません

私は自分のアプリケーションのテンプレートをバラバラにしたくないので、なぜ継承が実際に前進するのかについて、説得力のある理由 (django 以外のユーザー向け) を考え出そうとしています。これについてもう少し意見を聞きたいです。

私がすでに思いついたいくつかの理由:

  • さらにドライに。ボイラープレート html 構造を 1 か所で定義するだけでよいことを保証します。テンプレートが同期しなくなるリスクが大幅に減少

  • テンプレート、テンプレート、およびビュー外に属するコンテンツを保持します。例えば:

    <title>{% block title %}My Website{% endblock %}</title>

    <title>{{ pagetitle }}</title>

    これにより、フロントエンドのメンテナーは、バックエンドのビューを掘り下げなくても、フロントエンドをより細かく制御できます。

  • フロントエンドのコーダーは、ベースから拡張する/デフォルトをオーバーライドするという継承の概念にすでに精通している必要があります。次の css を検討してください。

    .nav {
      color: blue;
    }
    
    .nav.active {
      color: purple;
    }
    

ミックスに投入できる正当な理由はありますか?

4

1 に答える 1

0

継承を使用すると、(少なくとも私見では) マスター base.html テンプレートを作成し、他のすべてのページextendsにそれを許可することが容易になります。これにより、すべてのレイアウト/スタイリングがその 1 つのファイルで指定されるようになり、残りは標準化された方法でタグidを使用するだけです。class

extendsへの引数(およびinclude) が変数になる可能性があることを覚えておくとよいでしょう。私たちtemplates/base.htmlは1行です:

{% extends base_template %}

wherebase_templateはマスター コンテキスト プロセッサで設定されます。これと、変化するシンプルな管理ウィジェットを組み合わせるsession.base_templateことで、デザイナーは複数のレイアウトを作成し、ワンクリックでそれらを切り替えることができます. 彼女はそれが大好きです。

于 2012-05-04T04:14:38.087 に答える