django自定义过滤器 - 用行间距替换换行符

时间:2014-10-08 03:07:07

标签: python django replace newline

如果我的django模板中有一个格式为:

的字符串
Line 1<br />Line 2<br />Line 3<br />Line 4<br />

我希望将其格式化为:

Line 1 Line 2 Line 3 Line 4

我想用行空格替换换行符(&lt; br /&gt;),因此字符串在一行上。

我查看了django文档herehere,但我找不到自定义过滤器的可行替换。

有没有人对工作示例有任何建议或链接?

干杯。

编辑 - 更多背景 - 按要求

存储在db中的字符串是:

Line 1<br />Line 2<br />Line 3<br />Line 4<br />

在django模板中调用:

{{ education_detail.education_details_institution_name|truncatechars:20 }}

在浏览器中显示为:

Line 1<br />Line 2<br />Line 3<br />Line 4<br />

2 个答案:

答案 0 :(得分:1)

这是用换行符替换换行符的代码。

我遇到的问题是我没有添加@ register.filter(name =&#39; replace_linebr&#39;)

from django import template

register = template.Library()

@register.filter(name='replace_linebr')
def replace_linebr(value):
    """Replaces all values of line break from the given string with a line space."""
    return value.replace("<br />", ' ')

以下是对模板的调用:

{{ education_detail.education_details_institution_name|replace_linebr }}

我希望这会对其他人有所帮助。

答案 1 :(得分:0)

也许应用内置的striptagsremovetags过滤器? 注意在Django 1.8中不推荐使用removetags

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#removetags (文档似乎都注意到了一些安全警告)

{% filter removetags:"br" %}
    AA<br/>
    BB<br/>
    CC<br/>
    DD<br/>
{% endfilter %}

{% filter striptags %}
    AA<br/>
    BB<br/>
    CC<br/>
    DD<br/>
{% endfilter %}