Django在模板中用下划线替换空格

时间:2013-04-25 07:30:57

标签: python django django-templates

在我的数据库 jobs 表中,状态字段的值为" New_Mexico"。但我需要在html页面中显示如" New Mexico" 。给出一些寻找和替换的想法。

views.py

def result(request,user_id):
    userid=user_id
    query = Q(emp__companyname=userid) | Q(state=userid )
    details=jobs.objects.filter(query).select_related()
    return render_to_response('result.html', {'details': details})

result.html

{% for d in details %}
    <label>{{ d.state }}</label>
{% endfor %}

3 个答案:

答案 0 :(得分:5)

如果在使用{{ object }}时这应该是默认输出,那么您应该覆盖模型的__unicode__方法,如下所示:

class MyModel(models.Model):
  title = models.CharField(...)  # this field may hold our string "New_Mexico"
  ...
  def __unicode__(self):
    return self.title.replace('_', ' ')

另一种方法可能是使用{{ object.human_readable_title }},您可以在模型中定义方法:

  def human_readable_title(self):
    return self.title.replace('_', ' ')

我认为没有理由为此用例构建自己的模板标记,除非您想将它用于不同模型的许多字段。

编辑: 你的“工作”课程中似乎有一个名为“州”的字段。所以在你的情况下,解决方案可能是: 在你的模型类中创建一个方法

def human_readable_state(self):
  return self.state.replace('_', ' ')

并在模板中使用:

<label>{{ d.human_readable_state }}</label>

这应该可以解决问题。

答案 1 :(得分:1)

没有内置模板标签或过滤器来执行此操作。

编写自己的模板过滤器。

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters解释了你想要的东西。

答案 2 :(得分:0)

如果您的文字是“ python程序语言”

在Django中的html中使用此代码后 {{data.value.split | join:“-”}}

答案是:python-program-language