栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Django模板中复制数据的最佳方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Django模板中复制数据的最佳方法是什么?

看起来您的布局是可靠的。您有一个

base.html
模板,用于定义应用程序中每个页面的基本结构和外部布局。您还可以
base_object.html
扩展此模板。

您希望每个页面都有一个唯一的标题和一个匹配的h1(我认为)。最好的方法是在base.html模板中定义两个单独的块。

<html>    <head>        <title>{% block title %}Default Title{% endblock %}</title>    </head>    <body>        <h1>{% block h1 %}{% endblock %}</h1>    </body></html>

在子模板中,如果希望它们相同,则需要覆盖这两个模板。我知道您认为这是违反直觉的,但是由于在Django中处理模板继承的方式,因此这是必须的。

来源:Django模板语言

最后,请注意,您不能

{% block%}
在同一模板中定义多个具有相同名称的标签。存在此限制的原因是,块标签在“两个”方向上均起作用。也就是说,block标签不仅提供填充孔,还定义了填充父级孔的内容。如果
{%block %}
模板中有两个名称相似的标签,则该模板的父级将不知道要使用哪个块内容。

孩子们看起来像这样:

{% extends "base.html" %}{% block title %}Title{% endblock %}{% block h1 %}Title{% endblock %}

如果这让您感到困扰,则应将每个对象的视图标题设置为模板变量。

{% block title %}{{ title }}{% endblock %}{% block h1 %}{{ title }}{% endblock %}

Django努力将更多的逻辑排除在模板层之外。通常,标题是从数据库动态确定的,因此视图层是检索和设置此信息的理想场所。如果您想使用默认标题,则仍可以保留标题为空白(也许在中设置

base.html
,或者可以从
django.contrib.sites
软件包中获取网站名称)

{{ block.super }}
可能派上用场。这将允许您将父块的内容与子项的其他内容组合在一起。因此,您可以在基础中定义一个标题,例如“
Stackoverflow.com”,然后进行设置

{% block title %}{{ block.super }} - Ask a Question{% endblock %}

在孩子中获得诸如“ Stackoverflow.com-提问”之类的标题



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号