是否可以让Django自定义模板标签加载包中的其他模板

时间:2014-02-21 03:11:33

标签: python django

我想要做的是在Django包中打包模板,只需使用

即可将其插入开发者页面
{% load app_tags %}

这可以找到获取值并返回值的自定义方法。我想做的只是有一个方法,它返回与app一起打包的模板。

{{ custom_template }}

所以问题归结为如何安装我的应用程序的项目加载我的应用程序的标签并调用包含应用程序模板的标记方法。

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

烨!在app_tags.py中创建一个包含标记,然后调用它!

它们非常适合代码重用(当然还有Django块和{%include ...%}模板标记)

参考:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags

# app_tags.py
from django import template
register = template.Library()

@register.inclusion_tag("templates/myappname/greeting.html")
def greet(name, end="!!!"):
     return { 'name': name,  'end': end }

 {# templates/myappname/greeting.html  #}

 <h1>  What's up {{ name }}{{ end }}  </h1>

然后调用此方法,您可以使用{%%},双括号表示法,例如{{custom_template}}实际上仅用于显示单个变量的值

{% load app_tags %}

{% for person in people_to_greet %}
     {% greet person %}
{% end %}

<h3> cool greetings above ^ </h3>