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

时间:2016-02-18 09:28:03

标签: javascript python django

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

context['all_results'] = m.values('set', 'kidu', 'id', 'item', 'state__name')

所有结果都是我查看的查询结果:

std::regex_replace

面临的问题是如果item的值是逗号分隔值,则id不会传递给我拥有的模板。但是如果item的值是一个单词,那么我的代码工作正常并且id传递给模板。任何想法的人?

2 个答案:

答案 0 :(得分:2)

在您拥有自定义过滤器和标签的文件中,添加以下功能

 from django import template
 register = template.Library()

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

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

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

答案 1 :(得分:0)

您可以在模型上编写一个属性来进行替换,然后在模板中使用此属性

# model
@property
def uncommad_item(self)
    return self.item.replace(',', '_')

# template
{{ a.uncommad_item }}