私はWebサイト全体に共通ヘッダを持つdjangoを使用してWebサイトを作成する予定です。私はテンプレートの継承に関するdjangoのドキュメントを読んだことがありますが、私のヘッダの "動的な"要素のための洗練された解決策を見つけることはできません。django - いくつかの動的要素を持つ共通ヘッダを使用する
たとえば、ウェブサイトのヘッダーには、http://www.google.com/(「Web」、「Images」など)のようなタブが含まれます。ここでは、選択したタブでWebサイトの現在の位置が示されます。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link rel="stylesheet" href="style.css" />
<title>{% block title %}My Amazing Site{% endblock %}</title>
</head>
<body>
<div id="header">
{% block header %}
.... html to create tabs ...
{% endblock header %}
</div>
、その後、私の他のすべてのページに、私はこれを行うだろう:
{% extends "base.html" %}
{% block header % }
.... html to create tabs with one tab "selected" ...
{% endblock header %}
あなたは、このような基本テンプレートを作成しますようにDjangoのテンプレートの継承を使用して
は
、それが思われます
私のページのすべての1つがヘッダー情報でHTMLを複製する必要がありますが、わずかに異なるので迷惑なようです。ですから、新しいタブを追加するときは、すべてのHTMLファイルを変更する必要があります。現在選択されているタブを取り込んでカスタムテンプレートタグを作成し、各HTMLページでそのように、私はちょうど呼び出し -
が1: {%、さらに読め
は、他のいくつかの可能な解決策のように思えますブロックヘッダー%} {%mycustomtag abc%} {%エンドブロックヘッダー%}
このカスタムタグを作成するには、PythonコードにHTMLを配置する必要があるため、このソリューションが嫌いです。
2 - base.htmlのX個のサブテンプレートを作成し、すべて適切なタブを選択します。次に、各ページは、選択したいタブに基づいて適切なサブテンプレートを継承します。
このソリューションは、ほぼ同じHTMLのX個の数字が必要で、タブが追加または削除されたときにすべてのファイルを修正する必要があるという問題があります。
3 - javascript(jqueryなど)を使用して、ページの読み込み時のヘッダーを変更して、正しいタブを「選択」します。
このソリューションは問題ありませんが、この機能をすべてのページのJavaScriptに追加することを忘れないでください。ヘッダーHTMLは単一のHTMLファイルにしか存在しないというのが良い点です。
他の提案はありますか?
ありがとうございます!
私は「代替2 - 使用CSS」を使用しています。私はこれが最善の方法だと思う。論理のいくつかのブロックを持つ代わりに、あなたは1つしか持っていません! ありがとう! –