如何在另一个标签中使用Django模板标签?

时间:2016-06-20 23:17:48

标签: django django-templates

我有一个Django网站,我正试图让国际化。图像文件都使用两个字母的语言代码进行编码。因此,当用户切换语言时,图像文件的引用将使用模板中的语言代码进行更新,如下所示:

<img src="{% static 'website/images/contact_us_{{ LANGUAGE_CODE }}.png' %}">

问题是,我必须为静态内容的路径提供标记。解决这个问题的优雅方法是什么?

1 个答案:

答案 0 :(得分:1)

根据@MarAja的建议,我按照他/她的问题和解决方案here,这几乎与我的相同。我发布了我所做的,所以无论谁登陆这个页面都有解决方案。在我的研究期间,我没有偶然发现@ MarAja的帖子。

代码是一个精确的副本,不使用add标签的选择是因为根据Django文档,它试图将参数转换为int,即不用于字符串。

完整代码:

# Custom Template tag file named "custom_app_tags.py"
from django import template

register = template.Library()

@register.filter
def addstr(s1, s2):
    return str(s1) + str(s2)

最后,用法:

{% load staticfiles %}
{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
{% load custom_app_tags %}

<img src="{% static 'website/images/contact_us_'|addstr:LANGUAGE_CODE|addstr:'.png' %}">

请注意,我将所有内容都包含在内,以便以后访问此处的所有人都可以全面了解正在发生的事情。