57

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

4

5 に答える 5

86

できますよ。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 %}

詳細については、時間をかけてドキュメントを読んでください

于 2013-02-06T02:20:25.240 に答える
26

Django バージョン 3 の場合

ここでの回答のいくつかは正しいものですが、ディレクトリ構造内のどこにファイルを配置すればよいかを示していません。ということで、答えを少し説明します。



はい、プロジェクト ディレクトリからファイル{% extends "base.html" %}を拡張するために使用できます。注意すべき重要なことは、ファイルを配置する場所です。base.html
base.html

  1. 配列を開いproject_name/project_name/settings.pyて見つけ、に更新しますTEMPLATES
    'DIRS' : []'DIRS': [os.path.join(BASE_DIR, 'templates')]
  2. という名前のルート レベルにディレクトリを作成しますtemplates。このフォルダの場所はproject_name/templates
  3. すべてのアプリからアクセスするすべてのテンプレートをここに配置しprojects_name/templatesます。
    ファイル:project_name/templates/base.html
  4. project_name/app_name/templates/app_name/template_file.htmlを使用して、 にあるアプリケーション固有のテンプレートからこのベース ファイルを拡張します{% extends "base.html" %}

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



さらに、 に更新することで、staticテンプレート ディレクトリと同じレベルにプロジェクト全体のディレクトリを作成することもできます。STATICFILES_DIRSSTATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]project_name/project_name/settings.py


最終的なディレクトリ構造は次のようになります -

project_name/
    app_name/
        templates/
            app_name/
                template_file.html

    project_name/
        settings.py

    templates/
        base.html

    static/
        css/
        js/
        img/
于 2020-03-30T13:23:48.823 に答える
9

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

{% load staticfiles %}

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

また、index.html についても

{% extends "appname/base.html" %}
{% block content %}
     <h1>test</h1>
{% endblock %}
于 2016-03-30T06:34:49.623 に答える
7

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

私はDjangoを学び始めており、最近これを理解しました。私のコードはGithubにあります。Django テンプレートをどのように構造化してから継承し、navbar やヘッダー、フッターなどの一般的なものを継承するかに興味がある場合base.htmlinclude、私のコードをご覧ください。

于 2013-02-06T03:42:04.280 に答える