web-dev-qa-db-ja.com

Djangoプロジェクトベーステンプレート

すべてのアプリから描画できるプロジェクトのベーステンプレートを作成できますか?または、アプリごとにベーステンプレートを作成する必要がありますか?そして、それらを同じにしたい場合、私はそれらをコピーするだけですか?

41
heri0n

もちろんできます。 base.htmlの簡単な例

<!DOCTYPE html>
<html>
    <head>
        <title>My Project</title>
    </head>

    <body>
    {% block content %}{% endblock content %}
    </body>
</html>

また、view.htmlページを持つmyappというアプリがあるとします。

{% extends "base.html" %}

{% block content %}
    <h2>Content for My App</h2>
    <p>Stuff etc etc.</p>
{% endblock content %}

ドキュメントを読む に時間がかかります

69
Kenny Shen

はい、絶対にできます。 Djangoテンプレートでextendsおよびincludeテンプレートタグを使用します。

私はDjangoを学び始めており、最近これを理解しました。私のコードは Github にあります。Djangoテンプレートをどのように構成してbase.htmlを継承し、次にincludeの一般的なものを継承することに興味がある場合navbarやヘッダー、フッターなど。

6
redDragonzz

最後の回答には問題がありますが、ここに正しいものがあります。次のようなBase.htmlが必要です。

{% load staticfiles %}

<!DOCTYPE html>
<html>
<head>
    <title>My Project</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>

また、index.html

{% extend "appname/base.html" %}
{% block content %}
     <h1>test</h1>
{% endblock %}
6
Mohammad.Gh

はい、他のアプリが拡張するプロジェクトのベーステンプレートを作成できます。 @Kenny_Shenの回答を確認してください。

アプリの分離について懸念がある場合は、2つのメモを追加したいだけです。

  1. アプリが「base.html」の命名規則に依存しないようにするには、変数に実際の名前を挿入できます。以下をご覧ください: Djangoのテンプレート拡張機能の使用方法変数? 詳細については、

  2. 他のアプリとの衝突を避けるために、アプリテンプレートブロックに「コンテンツ」ではなく別の名前を付けることができます。

0
gmagno