我正在做一个django项目(我的第一个项目,在我的一个观点中,我有一个复杂的html片段,其中编织了JS。我想在同一视图的其他地方重用此“组件”。有没有办法做到这一点?请让我知道此设计是否有误吗?
使用{% include '/my/common/template.html' %}模板标签。
加载模板并使用当前上下文。这是一种方法“包含”其他模板模板。
模板名称可以是变量或硬编码(带引号)字符串,单或双引号。
我知道这是一个旧的,但也许有人会使用这个答案。
还有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" %}
[不确定,是否要在不同的模板(由不同的视图呈现)中重复使用HTML。如果是这样,请查看Django's template inheritance机制:
Django模板引擎中功能最强大(因此也是最复杂)的部分是模板继承。模板继承使您可以构建基本的“骨架”模板,该模板包含站点的所有常见元素并定义子模板可以覆盖的块。
您应该尝试使用Django自定义模板标签。这样,您可以将片段保存在外部文件中,然后通过{{ your_custom_tag }}
之类的名称轻松调用它们。这是使用可重用的xhtml标记块的非常方便的方法。您甚至可以将参数与这些自定义标签一起使用,例如{{ your_custom_tag|image:"logo.png" }}
。您可以了解有关自定义标签here的更多信息。