当前位置: 首页 > 面试题库 >

django模板:包括和扩展

孙文康
2023-03-14
问题内容

我想在2个不同的基本文件中提供相同的内容。

所以我正在尝试这样做:

page1.html:

{% extends "base1.html" %}
{% include "commondata.html" %}

page2.html:

{% extends "base2.html" %} 
{% include "commondata.html" %}

问题是我似乎无法同时使用扩展和包含。有什么办法吗?如果没有,我该如何完成以上工作?

commondata.html覆盖base1.html和base2.html中指定的块

这样做的目的是提供pdf和html格式的同一页面,但格式略有不同。上面的问题虽然简化了我要尝试做的事情,但是如果我能得到答案,它将解决我的问题。


问题答案:

使用扩展模板标签时,是指当前模板扩展了另一个模板-它是一个子模板,取决于父模板。Django将查看您的子模板,并使用其内容填充父模板。

您想要在子模板中使用的所有内容都应位于block之内,Django使用该块来填充父模板。如果要在该子模板中使用include语句,则必须将其放在一个块中,以便Django理解。否则,这只是没有意义,而Django不知道该怎么做。

Django文档中有一些非常好的示例,这些示例使用块替换父模板中的块。

https://docs.djangoproject.com/zh-CN/dev/ref/templates/language/#template-
inheritance



 类似资料:
  • 问题内容: 如果要覆盖django中应用程序随附的模板(在app / templates / app /中),请在另一个目录中创建相同名称的模板,模板加载器会在应用程序的模板目录之前检查该模板。如果您只想覆盖模板的某些块,则还必须复制整个模板广告,更改该块,这实际上不是很干。 有人知道一种方法来覆盖原始模板,同时扩展它,以便您只需要覆盖要更改的特定块吗?(这样做是在不更改模板名称的情况下进行的,因

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送唯一的登录网址即可,该网址设置了一个cookie,该cookie可以始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确保必

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送一个唯一的登录URL,该URL就会设置一个cookie,该cookie将始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确

  • 1 引言 现在我们看一看所展示出来的页面,你满意吗?还有可以改进的地方。比如性别,它显示出来的直接是数据库的值,而不是对应的“男”,“女”,怎么办。还有表格显示也不是很好看。没说的,改! 最初我想使用 CustomManipulator (Manipulator 是 Django 中用来自动生成元素对应的 HTML 代码的对象,你可以定制它),但使用 Manipulator 的话,你不能再使用 g

  • 问题内容: 如何覆盖管理模板(例如admin / index.html),同时扩展它(请参阅https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing -an-admin-template)? 首先-我知道这个问题已经被问过并回答过(请参阅Django:覆盖和扩展应用程序模板),但是正如答案所示,

  • 另一个有趣的事情Django已经为你做好了就是模板扩展。这是什幺意思呢?它意味着你可以使用你的HTML相同代码为你网站不同的网页共享。 通过这种方法,当你想使用同样的信息或布局,或者你想改变某些模板内容时,你不必在每个文件中都重复着相同的代码。你仅仅只需要改变一个文件,而不是所有的。 创建一个基础模板 一个基础模板是最重要的模板,你扩展到你网站的每一页。 让我们创建一个base.html文件到bl