【问题标题】:How do I reuse HTML snippets in a django view如何在 django 视图中重用 HTML 片段
【发布时间】:2011-04-14 05:14:18
【问题描述】:

我正在开发一个 django 项目(我的第一个项目),在我的一个观点中,我有一个复杂的 html sn-p,其中包含 JS。我想在同一视图的其他地方重用这个“组件”。有没有办法实现这一目标?请让我知道这个设计一开始是否有问题?

【问题讨论】:

  • 通过“视图”你认为模板吗?

标签: html django django-templates components


【解决方案1】:

不确定,如果您想在不同的模板中重用您的 HTML(由不同的视图呈现)。如果是这样,请查看Django's template inheritance 机制:

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

【讨论】:

    【解决方案2】:

    使用{% include '/my/common/template.html' %} 模板标签。

    加载模板并使用 当前上下文。这是一种方式 “包括”其他模板 模板。

    模板名称可以是 变量或硬编码(引用) 字符串,单声道或双声道 引号。

    【讨论】:

      【解决方案3】:

      您应该尝试 Django 自定义模板标签。这样您就可以将您的 sn-ps 保存在一个外部文件中,然后通过 {{ your_custom_tag }} 之类的方式轻松调用它们。这是处理可重复使用的 xhtml 标记块的一种非常方便的方法。您甚至可以将参数与这些自定义标签一起使用,例如 {{ your_custom_tag|image:"logo.png" }}。 您可以了解更多关于自定义标签here

      【讨论】:

        【解决方案4】:

        我知道这是一个旧的,但也许有人会使用这个答案。

        还有inclusion tag。就像包含标签一样,只有你可以传递参数并将其作为单独的模板处理。

        把这个放到my_app/templatetags/my_templatetags.py:

        @register.inclusion_tag('my_snippet.html')
        def my_snippet(url, title):
            return {'url': url, 'title': title}
        

        然后 my_sn-p.html 可以是:

        <a href="{{ url }}">{{ title }}</a>
        

        然后,在你的模板中使用这个 sn-p:

        {% load my_templatetags %}
        {% my_snippet "/homepage/" "Homepage" %}
        

        更多信息: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howto-custom-template-tags-inclusion-tags

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-23
          • 1970-01-01
          • 1970-01-01
          • 2016-11-18
          • 2011-07-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多