首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django从文件导入模板

django从文件导入模板
EN

Stack Overflow用户
提问于 2014-02-14 07:48:13
回答 2查看 10.1K关注 0票数 2

我有3页,它们在每个html文件的顶部都有相同的菜单。

菜单中有很多标签,当我想修改标签中的所有链接时,我有问题。

我想在名为menu.txt的其他文件中编写菜单,并使用模板加载menu.txt,然后将菜单与页面的其他部分组合起来。

有什么有效的方法吗?

除了在view.py中加载页面并将值传递给模板之外。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-14 07:55:02

模板继承

Django的模板引擎中最强大、也是最复杂的部分是模板继承。模板继承允许您构建一个基本的“骨架”模板,该模板包含站点的所有公共元素,并定义子模板可以覆盖的块。

从一个示例开始,最容易理解模板继承:

代码语言:javascript
运行
复制
<!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骨架文档,可以用于一个简单的两列页面。这是“子”模板的工作,用内容填充空块。

在本例中,块标记定义了子模板可以填充的三个块。块标记所做的就是告诉模板引擎,子模板可以覆盖模板的这些部分。

子模板可能如下所示:

代码语言:javascript
运行
复制
{% 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 %}

扩展标记是这里的关键。它告诉模板引擎,这个模板“扩展”了另一个模板。当模板系统评估此模板时,首先它定位父模板--在本例中为“base.html”。

您可以参考在每个html页面上扩展for部件

http://www.webforefront.com/django/createreusabledjangotemplates.html

票数 3
EN

Stack Overflow用户

发布于 2014-02-14 07:50:32

在模板文件中使用include。见文档

示例

代码语言:javascript
运行
复制
{% extends 'base.html' %}
{% block content %}
{% include 'includes/menu.html' %}
<h1>Hello World</h1>
<!-- ... -->
{% endblock content %}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21773573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档