跳转到主要内容

用于将模板块包裹在可重用封装模板中的Django模板标签

项目描述

django-wrapwith

用于将模板块包裹在可重用封装模板中的Django模板标签。

提供一个名为 wrapwith 的块标签,其行为与 内置的 include 标签 完全相同,但它将块的内容注入到包含的模板中。

它的目的是使包装标记可重用,鼓励您将模板分解成“组件”,这些组件可能具有特定的封装结构,但内容不同。它特别适用于提供组件(卡片、块引用、手风琴等)具有可重用结构但任意内容的系统。

一个玩具示例:想象一下,您的设计中包含一个具有彩色边框的框组件,但可以包含任何其他标记。

首先,创建一个包装模板, wrappers/box.html

<div style="border: 1px solid {{ bordercol }}">
  {{ wrapped }}
</div>

注意特殊的 {{ wrapped }} 变量,它将被替换为您的包装内容。

然后,在您的首页模板中

{% load wrapwith %}

<html>
  <body>
    <h1>welcome to my page</h1>

    {% wrapwith "wrappers/box.html" with bordercol="red" %}
      <p>this is inside a red box</p>
    {% endwrapwith %}

    {% wrapwith "wrappers/box.html" with bordercol="green" %}
      <p>this is inside a green box</p>
      <p>and here's another paragraph inside the green box</p>
    {% endwrapwith %}
  </body>
</html>

可选:模板别名

如果您发现每次使用组件时都写出完整的模板路径太冗长,您可以在Django设置中定义一个名为 WRAPWITH_TEMPLATES 的“别名”字典。此字典可以是嵌套的。然后,您可以在模板中使用点路径访问此字典。

在您的 settings.py

WRAPWITH_TEMPLATES = {
  "wrappers": {
    "box": "wrappers/box.html",
  },
}

在您的模板中

{% wrapwith wrappers.box with bordercol="red" %}
  <p>this is inside a red box</p>
{% endwrapwith %}

在Python 3上与所有当前支持的Django版本进行了测试。

安装

pip install django-wrapwith

然后将 wrapwith 添加到您的 INSTALLED_APPS

行为准则

有关在贡献此存储库时的行为准则指南,请参阅 https://www.dabapps.com/open-source/code-of-conduct/

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-wrapwith-0.0.2.tar.gz (4.7 kB 查看哈希值)

上传时间

构建分布

django_wrapwith-0.0.2-py3-none-any.whl (5.5 kB 查看哈希值)

上传时间 Python 3

支持