我是python/django的新手。我喜欢django的模板,但是有一个重复出现的东西我找不到
对于我来说,在一个(可能很长的) HTML标记上有一个条件属性是很常见的。大多数情况下,这是一个额外的CSS类。
例如,假设您有两个用于切换语言的链接,并且您希望一次只启用一个链接。我发现自己在做这样的事情:
{% get_language_info for LANGUAGE_CODE as l %}
<a href="/path/to/switch/to/spanish"
class="{% ifequal l.code "es" %} disable {% endifequal %}">
<img src="/spanish/flag/url" alt="Spanish">
</a>
<a href="/path/to/switch/to/english"
class="{% ifequal l.code "en" %} disable {% endifequal %}">
<img src="/english/flag/url" alt="English">
</a>
其他示例可以是在呈现项目列表并检查“选定的”项目时等。
在其他语言中,我使用了一个三元运算符,但我知道这在python/django世界中被认为是“邪恶的”:-)
我想知道是否有办法利用"yesno“过滤器。我试着做一些类似的事情:
{{l.code=="es"|yesno:"disabled,"}}
但是我不能让它工作。我是不是遗漏了什么?
提前谢谢。
发布于 2011-12-06 19:21:47
问题很简单,就是你发布的代码中的语法:
{{l.code=="es"|yesno:"disabled,"}}
它实际上是这样处理的:
{{ l.code=={{"es"|yesno:"disabled,"}} }}
(注意:该代码不起作用,它只是为了说明Django是如何读取它的)
您需要的是一个自定义模板标记,它的工作方式类似于if
模板标记,但返回方式类似于yesno
过滤器。您可以在djangosnippets.com之类的网站上进行搜索;也许有人已经为您完成了这项工作。否则,我建议查看这两个工具的Django源代码,并尝试将它们合并到您自己的templatetag中。
发布于 2011-12-07 11:52:10
或者你可以使用jQuery/javascript来设置类:http://api.jquery.com/attr/,就像这样--没有经过测试!
{% get_language_info for LANGUAGE_CODE as l %}
<script>
{% if l.code='es' %}
$('.english').attr('class','disable');
{% else %}
$('.english').attr('class','disable');
{% endif %}
</script>
<a href="/path/to/switch/to/spanish"
id="spanish" class='enable">
<img src="/spanish/flag/url" alt="Spanish" >
</a>
<a href="/path/to/switch/to/english"
id="english" class='enable">
<img src="/english/flag/url" alt="English">
</a>
https://stackoverflow.com/questions/8404782
复制相似问题