ウェブサイトは、通常、画像、JavaScript、CSSなどの追加ファイルを処理する必要があります。 Djangoでは、これらのファイルを「静的ファイル」と呼びます。
動的でない、つまりこれらのファイルの内容は、設計またはその固有の特性(例:画像のようなバイナリコンテンツ)によって比較的固定されているため、単純に「静的」と呼ばれます。アプリケーションサーバーによって処理されます。
これらの静的ファイルを、たとえばnginxを使用して、より低いレベルで提供することをお勧めしますので、それらを他のファイルと区別します。これにより、これらのファイルをより速くサービスすることができます。はのようになり、パフォーマンスが向上します。また、キャッシングも簡単です。
しかし、CDNを使用する場合は、この作業をサーバーから他のサーバーにオフロードします。
あなたの質問に戻ります。すべてのテンプレートでリソースを宣言する必要はありません。通常、base.html
には、ページのベースが含まれています。このページは、より具体的な(子)テンプレートで拡張できます(読む:template inheritance)。すぐにこれを理解するには
は、ここでの例です:
base.html:
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="~~CDN HERE~~">
<script src="~~CDN HERE~~"></script>
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
article.html
{% extends "app/base.html" %}
{% load static %}
{% block body %}
<h1>{{ page_title }}</h1>
<img src="{% static 'app/img/detective.png' %}" alt="detective" />
{{ page_content | safe }}
{% endblock %}
今すぐあなたのサイト上のすべての記事のために、あなたが記事をレンダリングあなたのCSS/jsファイルを複数のページに言及する必要性を排除して自動的にベースを拡張するテンプレート。
あなたが別のページに別のリソースファイルを使用している場合は、あなたが作成、その後{% block css %}{% endblock %}
など、追加のブロックが、私はのための静的使用していますどのようにあなたのarticle.html
{% block css %}
<link rel="stylesheet" href="{% static 'app/css/article.css' %}">
{% endblock %}
お知らせにこれを追加することができますnginxによって直接提供される画像です。
理論的には、あなたは、ファイルにクラブあなたのCDNリンクして、base.html
でinclude
それをすることができますが、それだけで冗長な複雑さの原因となる、モジュールの上につながります。
問題がある場合は教えてください。