Django包含可配置模板的标签

mep*_*pum 19 tags django templates

我已经创建了一个包含标记,但是我希望能够使模板可选择配置.似乎没有开箱即用的支持,所以我想看看人们如何做到这一点 - 也许是一个方法首先搜索模板目录中的特定模板名称,然后再回到默认模板.

@register.inclusion_tag('foo.html', takes_context=True)
Run Code Online (Sandbox Code Playgroud)

bbr*_*rik 34

我需要这样做时使用simple_tag:

from django.template import Library, loader, Context

@register.simple_tag(takes_context=True)
def my_tag(context, template_name):

    var1 = ...

    t = loader.get_template(template_name)
    return t.render(Context({
        'var1': var1,
        ...
    }))
Run Code Online (Sandbox Code Playgroud)


cma*_*nda 10

这篇文章拯救了我的生命:http://djangosnippets.org/snippets/1329/

关键是添加到"虚拟模板":

{% extends template %}
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 6

inclusion_tag装饰只是一个快捷方式-它意味着渲染特定的模板与特定的上下文的简单方法.一旦你想要移出它,它就再也无法帮助你了.但这只是意味着您必须在很长的路上编写标记,如文档中所述,并将您想要的模板作为参数传递.