我如何在Django视图中重用HTML代码段

问题描述 投票:13回答:4

我正在做一个django项目(我的第一个项目,在我的一个观点中,我有一个复杂的html片段,其中编织了JS。我想在同一视图的其他地方重用此“组件”。有没有办法做到这一点?请让我知道此设计是否有误吗?

html django django-templates components
4个回答
18
投票

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

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

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


7
投票

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

还有inclusion tag。就像include标记一样,只有您可以传递参数并将其作为单独的模板进行处理。

将其放入my_app/templatetags/my_templatetags.py

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

然后my_snippet.html可以是:

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

然后,在模板中使用此代码段:

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

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


2
投票

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

Django模板引擎中功能最强大(因此也是最复杂)的部分是模板继承。模板继承使您可以构建基本的“骨架”模板,该模板包含站点的所有常见元素并定义子模板可以覆盖的块。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.