私はいくつかのアイデアを持っています。
filesystem loaderを有効にして、TEMPLATES[0]['DIRS']
(以前はTEMPLATE_DIRS
)に静的ファイルを含む関連ディレクトリを含めることが最も簡単です。あなたがインストールしたアプリケーションの中に含まれている静的ファイルは、DIRS
にリストされていない限り自動的には取り込まれないという警告があります。別のオプションはSTATIC_ROOT
を使用することですが、通常は開発中に行う必要のない静的ファイルを変更するたびにcollectstatic
を実行する場合にのみ有効です。もう一つの落とし穴は、CDNを使用したり、静的ファイルを別のホスト/ネットワーク/任意の場所にホストしたりするのではなく、ローカルの静的ストレージでのみ機能するということです。
他にも、スタティックファイルを使用してスタティックをテンプレートとして読み込む独自のテンプレートローダーを作成することができます。これはもう少し複雑ですが、格納方法や使用方法に関係なく静的ファイルにアクセスできるはずです。
どちらのオプションを選択する場合でも、注意する必要があります。たとえば、テンプレートとして含める静的ファイルが、HTMLやその他のコンテキストに含めることが安全であることを保証する必要があります。エスケープされることはありません。
クライアントが要求するリクエストの数を最適化しようとしている場合は、より良い方法があります。あなたは、静的ファイルを前処理して圧縮するいくつかのパイプラインを実装する方がよいでしょう。 CSS/JSの重要な部分をHTMLに含めることで、クライアントがキャッシュを活用することが不可能になり、同じ静的コンテンツを何度も繰り返しダウンロードして、パフォーマンスに悪影響を及ぼす可能性があります。
編集:動的JavaScript変数を含めるだけで、静的ファイルではないので、本当に必要なのは、JavaScriptコードを含むテンプレートを作成し、テンプレートとして静的ファイルを処理することを邪魔しないことです。すべてのjavascriptが静的なファイルである必要があると言うルールはありません。動的な場合は、静的なファイルではありません。
記録的には、これはXY problemの典型的なインスタンスでした。問題Xは、テンプレートをレンダリングするときにJavaScript変数に値を動的に割り当てていました。あなたは、潜在的な解決策としてテンプレートに静的ファイルを含めることを考え出しましたが、テンプレートに静的ファイルを含める方法がわからないという問題Yに悩まされました。
なぜ投票が下りましたか? **広すぎる**のため、質問を閉じることを提案しましたか?それは気違いです!この質問は非常に具体的です:静的なファイルを含めることができるように、2つのテンプレートタグ 'include'と' static'をどのようにして統合しますか? –
[努力が必要ですか?](http://meta.stackoverflow.com/q/288176/1324033) - > "作業指示書"には "広すぎる"というフラグを付ける必要があります。 – Sayse
テンプレートに静的ファイルを含めることはあまり一般的ではありません。あなたが解決しようとしている問題が本当に正しい解決策であると確信していますか? TEMPLATE_DIRSにあなたのSTATIC_ROOTを含めたり、静的ファイル用の独自のテンプレートローダーを作成するなどの回避策がありますが、これは奇妙なことです。後であなたを噛んでしまうかもしれません。 – koniiiik