最近、サイト全体の CSS レイアウトを使用する Django のプロジェクトに取り組んでいるので、使用する各テンプレート (この場合は /projects/index.html 内のテンプレート) は、ヘッダーを含むベース ファイルを拡張することにしました。フッター、javascript などと呼ばれbase.html
ます。
問題は、私のディレクトリ構造が次のようになっていることです。
.
├── static
│ └── base.html
├── templates
│ └── projects
│ └── index.html
そして、ご覧のとおり、拡張したい基本ファイルは index.html ファイルよりも上位のディレクトリにあります。通常、私は相対パスを使用し、インデックス ファイルの先頭で次のコードを使用します:{% extends "../base.html" %}
または、単にファイルへの絶対パスを使用します (必要な場合)。
ただし、これらの方法のいずれかを使用すると、 extends の引用符内にあるものはすべて現在のパスに追加され、 .. を使用した上位ディレクトリへの呼び出しは完全に無視されるようです。
つまり、たとえば、現在のパスが で/project/templates/projects
あり、私が を使用している場合{% extends "/project/static/base.html" %}
、それが現在のパスに追加され、システムが を探しますが/project/templates/projects/project/static/base.html
、もちろん存在しません。調査の結果、相対パスのブロックはセキュリティ上の目的で意図的に行われているという記事に出くわしましたが、現在の作業ディレクトリ以外のファイルにアクセスする方法がありません。
これは、Web サイトを構築するときの非常に一般的な設定でなければならないと考えたので、まだ気付いていない複数のテンプレートと対話する何らかの方法が必要であると考えました。誰かがそれについての情報を持っているなら、それは大歓迎です。