我还是Django的新手。
我有4个.html文件:header.html(每个页面的通用标题),body.html(加载必要的css文件并根据用户角色生成导航按钮),home.html和apply.html
这是我想要做的: 1)body.html的header.html(每个页面的通用标题)parent。 2)home.html的body.html父和apply.html
这是我在header.html中的代码:
<!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中的代码:
{% 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 %}
以下是我在home.html和apply.html中的代码:
{% extends "body.html" %}
{% block content %}
<div>load user detail<div>
{% endblock %}
问题:当我登录测试用户时,home.html显示了我想要的界面设计,因为包含了bodyTemplate.css。但是当我按下一个链接到apply.html的按钮时,它会显示一个白色的页面,上面有空的样式字样,没有按钮。
答案 0 :(得分:0)
这不会直接回答您的问题,但这不是使用模板继承的最佳方式。你想要的是一个基本模板,全部基本的html布局,即:
# 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>
另请注意,您的代码中包含以下内容:
{% 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 %}
实际关闭head
代码并打开body
代码的时间与roles
中的项目一样多... ...可以为零(如果“角色”为在当前上下文中为空或未定义)意味着你不会有bodyTemplate.css和无效的html doc(unclosed head,no body),或者不止一次,这意味着你将拥有同一个css的链接数量,并且仍然一个无效的HTML文档。