2017-02-13 2 views
0

私はDjangoにとってまだとても新しいです。Djangoはテンプレートを伸ばしています

私は4つの.htmlファイルがあります。home.html header.html(すべてのページのための一般的なヘッダ)、body.html(負荷に必要なCSSファイルとユーザーの役割に応じたナビゲーションボタンを生成する)、およびapply.html

ここに私がしたいことがあります: 1)header.html(全ページの総称)body.htmlの親。

{% extends "header.html" %} 
{% block body %} 
{% for role in roles %} 
{% load staticfiles %} 
<link rel="stylesheet" href="{% static 'bodyTemplate.css' %}"/> 
</head> 
<body> 
<div><!--place my button here</div> 
{% endfor %} 
{% endblock %} 
:ここ
<!DOCTYPE html> 
<html> 
{% load staticfiles %} 
<head> 
    <link rel="shortcut icon" href="{% static "favicon.ico" %}"/> 
    <link rel="stylesheet" href="{% static 'loginTemplate.css' %}" /> 
{% block body %}{% endblock %} 
{% block content %}{% endblock %} 

はbody.htmlで私のコードです: 2)home.htmlのbody.html親とここapply.html

はheader.htmlで私のコードです

{% extends "body.html" %} 
{% block content %} 
<div>load user detail<div> 
{% endblock %} 

質問:私は私のテストユーザー、自宅にログインここ

はhome.htmlとapply.htmlで私のコードです。 htmlは、bodyTemplate.cssが含まれているので、私が望むインターフェイスデザインを示しました。しかし、apply.htmlにリンクするボタンを押すと、空白のスタイリングワードとボタンのない白いページが表示されました。

+0

"適用"ビューに任意の役割が設定されていますか? – Sayse

+1

Nope。私はあなたがそれについて言及した後にそれを実現しました。それから私はいくつかのコードのチェックを行い、それはページがhome.htmlのようなボタンを表示しなかった理由の1つです。 – Ty943

答えて

0

これはあなたの質問に直接答えませんが、これはテンプレート継承を使用する最善の方法ではありません。何が欲しいのはすべて基本的なHTMLレイアウト、すなわちで1つの基本テンプレートです:

# base.html 
<!DOCTYPE html> 
<html> 
{% load staticfiles %} 
<head> 
    <link rel="shortcut icon" href="{% static "favicon.ico" %}"/> 
    <link rel="stylesheet" href="{% static 'loginTemplate.css' %}" /> 
    {% block extra-head %} 
    {# you can add any page-specific additional headers here #} 
    {% endblock %} 
</head> 
<body> 
{% block content %} 
{# now you can have various "layout" subtemplates hooking into 'body' #} 
{% endblock %} 
</body> 
</html> 

はまた、あなたのコード内であなたがこれを持っていることに注意してください:

実際 headタグを閉じます
{% block body %} 
{% for role in roles %} 
    {% load staticfiles %} 
    <link rel="stylesheet" href="{% static 'bodyTemplate.css' %}"/> 
    </head> 

<body> 
    <div><!--place my button here</div> 
{% endfor %} 
{% endblock %} 

bodyタグをrolesにあるアイテムと同じくらい多く開いてください... bodyTemplate.cssと無効なhtml docを持たないことを意味するゼロ(「ロール」が空でも現在のコンテキストでも定義されていない場合) (閉鎖されていない頭、体なし)、または複数回、あなたがh同じCSSへの多くのリンクを残していますが、依然として無効なhtmlドキュメントです。

+0

こんにちは、お返事ありがとうございます。それは実際には非常に直接的な方法ではなく、実際に助けてくれました。今私は自分の間違いがどこにあるかを見ることができます。うん、私はテンプレートの継承を使用する最良の方法ではないことに同意します。その理由は、ログインページにheader.htmlを使用しているため、1ページ分の余分なテンプレートを作成する必要はありません。ログインページ以外に、home.htmlのようなページにはユーザー用のボタンが必要です。私のアマチュアコーディングも指摘してくれてありがとう。それで、私はなぜ私の役割が空であるためapply.htmlがボタンを印刷しないのかを知りました。それは他のページ開発中に私にいつも思い出させるものです。 – Ty943

+0

奇妙で脆いテンプレートレイアウトを維持しなければならないという苦労に値する1つの余分なテンプレートを保存していますか?まあ、私の問題ではありませんが... –

+0

母は、本当に私は余分な1つのテンプレートを持って心配しないでください。しかし、これは私がコードを取得するときに得るものです。だから、私はちょうどそれらすべての "奇妙なテンプレート"を通常のテンプレートに変更する必要があります... – Ty943

関連する問題