首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django模板过滤器中用下划线替换逗号

如何在Django模板过滤器中用下划线替换逗号
EN

Stack Overflow用户
提问于 2016-02-18 09:28:02
回答 2查看 6.6K关注 0票数 1

嗨,我有javascript,如下所示包含django变量。

代码语言:javascript
复制
<script>

$(document).ready(function() {
    {% for a in all_results %}
            $('#{{a.set|slice:":7"}}_{{ a.item }}_{{ a.kidu|slice:":2" }}').html('<a class="a1" href="{% url 'req_detail_view' a.id %}">{{ a.id }}</a>');
            $('#{{a.set|slice:":7"}}_{{ a.item}}_{{ a.kidu|slice:":2" }}').addClass('{{ a.state__name.split|join:"_" }}');
    {% endfor %}
});
</script>

从我的观点来看,所有结果都是一个查询结果:

代码语言:javascript
复制
context['all_results'] = m.values('set', 'kidu', 'id', 'item', 'state__name')

所面临的问题是,如果item的值是逗号分隔的值,则id不会传递给我所拥有的模板。但是,如果item的值是一个单词,那么我的代码工作得很好,并且id正在传递给模板。伙计们有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-18 09:48:10

在有自定义筛选器和标记的文件中,添加以下函数

代码语言:javascript
复制
 from django import template
 register = template.Library()

 @register.filter
 def replace_commas(string):
    return string.replace(',', '_')

要查看如何创建自定义过滤器,请查看django的文档

  1. 在应用程序目录中创建一个文件夹“templatetag”
  2. 在该文件夹中创建一个文件名“my_filter.py”和'__init__.py'
  3. 在my_filter.py中复制上面的代码
  4. 在模板中,在顶部添加{% load my_filter %}。
  5. 现在您可以像这样使用您的过滤器{{m.item|replace_commas}

注意,您可以通过使find/替换一个参数来使模板标记更加灵活。例如:

代码语言:javascript
复制
from django import template
register = template.Library()

@register.filter
def find_replace(string, find_replace=",|_"):
    find, replace = find_replace.split("|")
    return string.replace(',', '_')

然后,您就可以在模板中这样使用它了:

代码语言:javascript
复制
{{ m.item|find_replace:",|-" }}

(用-代替-'s )

票数 6
EN

Stack Overflow用户

发布于 2016-02-18 09:48:35

您可以只需在模型上写入一个属性来执行替换,然后在模板中使用此属性。

代码语言:javascript
复制
# model
@property
def uncommad_item(self)
    return self.item.replace(',', '_')

# template
{{ a.uncommad_item }}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35477483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档