This question already has answers here:
Render Externally Defined Block In Django Template
(3个答案)
5年前关闭。
我有3个页面,所有这些页面在每个html文件的顶部都有相同的菜单。
菜单中有许多a标签,当我想修改标签中的所有链接时遇到问题。
我想在另一个名为menu.txt的文件中编写菜单,并使用template加载menu.txt,然后将menu与页面的其他部分结合起来。
有什么有效的方法吗?
在view.py中加载页面并将值传递给模板。
谢谢您。
这个模板,我们称之为base.html,定义了一个简单的html框架文档,您可以将其用于一个简单的两列页面。“子”模板的工作是用内容填充空块。
在本例中,块标记定义了三个子模板可以填充的块。块标记所做的一切就是告诉模板引擎,子模板可以覆盖模板的这些部分。
子模板可能如下所示:
extends标签是这里的关键。它告诉模板引擎此模板“扩展”另一个模板。当模板系统计算此模板时,首先它会定位父模板(在本例中为“base.html”)。
您可以参考扩展每个html页面上的commom部分
http://www.webforefront.com/django/createreusabledjangotemplates.html
(3个答案)
5年前关闭。
我有3个页面,所有这些页面在每个html文件的顶部都有相同的菜单。
菜单中有许多a标签,当我想修改标签中的所有链接时遇到问题。
我想在另一个名为menu.txt的文件中编写菜单,并使用template加载menu.txt,然后将menu与页面的其他部分结合起来。
有什么有效的方法吗?
在view.py中加载页面并将值传递给模板。
谢谢您。
最佳答案
模板继承
Django模板引擎中最强大、也因此最复杂的部分是模板继承。模板继承允许您构建一个基本的“骨架”模板,该模板包含站点的所有公共元素,并定义子模板可以覆盖的块。
从一个例子开始,很容易理解模板继承:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css" />
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
这个模板,我们称之为base.html,定义了一个简单的html框架文档,您可以将其用于一个简单的两列页面。“子”模板的工作是用内容填充空块。
在本例中,块标记定义了三个子模板可以填充的块。块标记所做的一切就是告诉模板引擎,子模板可以覆盖模板的这些部分。
子模板可能如下所示:
{% extends "base.html" %}
{% block title %}My amazing blog{% endblock %}
{% block content %}
{% for entry in blog_entries %}
<h2>{{ entry.title }}</h2>
<p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}
extends标签是这里的关键。它告诉模板引擎此模板“扩展”另一个模板。当模板系统计算此模板时,首先它会定位父模板(在本例中为“base.html”)。
您可以参考扩展每个html页面上的commom部分
http://www.webforefront.com/django/createreusabledjangotemplates.html
关于python - django从文件导入模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21773573/