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

Kar*_*hik 2 python django django-templates

在我的数据库作业表中,状态字段的值为"New_Mexico".但我需要在"新墨西哥"这样的html页面中显示.给出一些寻找和替换的想法.

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})
Run Code Online (Sandbox Code Playgroud)

result.html

{% for d in details %}
    <label>{{ d.state }}</label>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

maw*_*awi 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('_', ' ')
Run Code Online (Sandbox Code Playgroud)

可能正在使用不同的方法{{ object.human_readable_title }},您可以在模型中定义方法:

  def human_readable_title(self):
    return self.title.replace('_', ' ')
Run Code Online (Sandbox Code Playgroud)

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

编辑:你的"工作"课程中似乎有一个名为"州"的字段.因此,在您的情况下,解决方案可能是:在您的模型类中创建一个方法

def human_readable_state(self):
  return self.state.replace('_', ' ')
Run Code Online (Sandbox Code Playgroud)

并在模板中使用:

<label>{{ d.human_readable_state }}</label>
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.


Aks*_*aaj 2

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

编写您自己的模板过滤器。

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