我已经阅读了custom tags and filters documentation,但我没有看到如何做到这一点。我想创建一个只呈现字符串的自定义标记。没有上下文,每次只是相同的字符串文字。在这种特殊情况下,我更倾向于将{%include'hello_world.htm'%}放在一起:
Foo, foo foo
<br>
{% hello_world %}
<br>
bar bar bar
呈现给:
Foo, foo foo
<br>
"Hello World"
<br>
bar bar bar
我觉得我应该可以用以下的方式做到这一点:
custom_tags.py:
from django import template
register = template.Library()
@register.inclusion_tag('hello_world.htm')
def hello_world():
return {}
# Or:
def hello_world():
return {}
register.inclusion_tag('hello_world.htm', takes_context=False)(hello_world)
没有骰子。我在custom_tags.py中有其他自定义标签,我正在加载它们并且它们工作正常,但总是得到
Invalid block tag: 'hello_world', expected 'endblock' or 'endblock content'
文档说
标签比过滤器更复杂,因为标签可以做任何事情。
...你如何用标签做最简单的事情?
答案 0 :(得分:1)
您可以使用简单标记执行此操作:https://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#shortcut-for-simple-tags
from django import template
register = template.Library()
@register.simple_tag
def hello_world():
return u'Hello world'
然后在您的模板中,您可以编写{% hello_world %}
来呈现字符串。