我有一些需要在模板中的2个位置显示的静态文本。
例如:
<div>
{% if something %}
This is a static text
{% else %}
Something else happened
{% endif %}
</div>
... more html
<span>
{% if something %}
This is a static text
{% else %}
Something else happend
{% endif %}
</span>
include template
,但这可能不是实现目标的最佳方式。最好的方法是什么?
答案 0 :(得分:7)
绝对使用包含标签:
http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags
标签文件可以是超级简单的东西,就像文本“这是一个静态文本”或整个块一样:
{% if something %}
This is a static text
{% else %}
Something else happened
{% endif %}
“something”可以作为变量传递给模板标签,因此您可以以可变的方式使用整个块。
答案 1 :(得分:4)
我使用django internationalization来做到这一点。所以在我的应用程序/模板中我只写密钥,而在.po文件中是键的值。
{% load i18n %}
<div>
{% if something %}
{% trans "static" %}
{% else %}
{% trans "something else" %}
{% endif %}
</div>
在我的.po文件中:
msgid "static"
msgstr "This is a static text"
msgid "something else"
msgstr "Something else happened
除了对多语言有用之外,复制写入更容易,以防你以后想要更改它,因为你可以只看一个文件而不是浏览几个模板。
答案 2 :(得分:2)
有几种方法,但可能取决于文本是什么以及使用频率。如果没有完整的细节,很难推荐一个特定的选择
答案 3 :(得分:2)
您可以使用flatblocks:http://github.com/zerok/django-flatblocks
或块:http://code.google.com/p/django-chunks/
对于您的问题,这些可能有点过分,因为它们将您的代码段存储在数据库中,但它们增加了可以通过管理员编辑它们的好处。
{% load chunks %}
<div>
{% if something %}
{% chunk "something" %}
{% else %}
{% chunk "something_else" %}
{% endif %}
</div>
有很多叉子或类似的项目,例如:
答案 4 :(得分:0)
我有一个类似Java属性的文件,我用于所有资源字符串。我只是提供我想要的那个。将这些保存在一个地方也使翻译变得容易。
例:
welcome_msg="hello user!"
thank_you="thank you"
goodbye_msg="goodbye, " + thank_you
答案 5 :(得分:0)
如果包含的文字变大,请使用“包含”标记。
{%include“myapp / helptext.html”%}
GrtzG