2016-04-03 11 views
0

テンプレートシステムを使用して自分のサイトの別のページを開発しています。私は基本テンプレートである 'base.html'を持っています。ここでは、ヘッダーとナビゲーションメニューのように、すべてのサイトのページに共通の機能が静的({%ブロック%}はありません)です。テンプレートが正しく 'base.html'に拡張されない

「login」と「logout」にヘッダーのテキストを挿入したり、メニュー要素にリンクを作成したりするなど、いくつか変更しています。

私は他のテンプレート( 'base.html'を拡張しています)に行くと、それはすべてうまくロードされますが、例えばトップdivの 'ログイン'の新機能やメニューのリンクも表示されません。テンプレートが 'base.html'に拡張されている場合、それらは共通ではありませんか?私はあなたのコードの一部を紹介します:

<body> 

<header> 
<div class="topbox"> 
    <!-- <img src="static/mysite/g5794.png" alt="Logo" height="180" width="1400"> --> 
</div> 
<div id="auth"> 
    {% if user.is_authenticated %} 
     <p>Bienvenido, <b>{{ user.username }} | <a href=" {% url "logout" %}">Logout</a></b></p> 
    {% else %} 
     <p>Bienvenido, por favor <a href="{% url "login" %}">loguéate</a></p> 
    {% endif %} 
</div> 
<p>MAIN PAGE MAIN TOP PAGE</p> 
</header> 

<nav> 
    <div class="menu"> 
     <p><a href="{% url "index_view" %}">HOME</a> | <a href="{% url "list_index" %}">LIST</a> | <a href="">ELSE</a> | <a href="">BLOG</a></p> 
    </div> 
</nav> 

{% block content1 %} 

私が述べた特徴は「base.html」を拡張し、他のテンプレートでは動作しません:

「base.html」はこのコードを持っています。たとえば、「login.htmlと」テンプレートは、一瞬のために、次のようになります。

{% extends "base.html" %} 
{% load staticfiles %} 
{% load static from staticfiles %} 
{% load i18n %} 
{% block title %}{% trans "LOGIN" %}{% endblock %} 
{% include "base.html" %} 

{% block content1 %} 
{% block style_base %} 
<link href="{% static 'css/styles.css' %}" rel="stylesheet"> 
{% endblock %} 
    <div style="text-align:center"> 
    <h1>login</h1> 
    {% if message %} 
    <b>{{message}}</b> 
    {% endif %} 
    <form action="" method="post">{% csrf_token %} 
     {{form.as_p}} 
    <input type="submit" value="Submit" /> 
</form> 
{% endblock %} 

ページの一番上にあるすべてのものをテンプレートタグを少し「base.html」からスタイルを継承するために必要とされている(ことができます多くのコードなしでそれらのスタイルに拡張する方法を見つけることはできません)。これはトップのdivを適切にロードしますが、私が言及したものは表示されません(ヘッダーの新しいログイン/ログアウト行とnavメニューのリンク)。これは 'list_index'テンプレートでも同じように起こります。

ここで何が起こるか分かりません。コードの一部にしか拡張できないか、または最新のものに拡張できないのは本当ですか?私のsettings.pyテンプレートのセクションは次のようになります:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'Templates')], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'django.template.context_processors.media' 
      ], 
     }, 
    }, 
] 

また、 'DIRS':[]で試してみました。すべてが正常に表示される唯一のページは、インデックスページ(base.htmlページ)です。他のテンプレートはどうなりますか?ありがとうございました。

+0

別の場所に2つのbase.htmlファイルがありませんか? – Selcuk

+0

login.htmlを表示しているビューを表示する必要があります。 –

+0

はい、ありがとう、私は2つの異なるbase.htmlファイルを持っています。今度は、一度変更されると、 'list_index'のページはbase.htmlからスタイルを取得しません(以前と同じように)。コードの更新で編集しました。 – Jim

答えて

0

in base.html {%block content1%}のみが表示されますが、{%endblock content1%}}は表示されません。

+0

コード全体をコピーしなかったからです。この問題は解決されましたが、スタイルが正しく拡張されませんでした。最初の投稿が編集されました。ありがとうございます。 – Jim

+0

私の答えがあなたのために役に立つなら。私に投票してください –

関連する問題