截断中间的文本,Django模板标签

时间:2019-07-13 19:24:02

标签: django django-templates tags

在长文本中间是否有本机的方法来truncatechars

我要寻找的示例:

word = '123456789'

{{ word|truncatechars_middle:4 }}

显示:

12...89

1 个答案:

答案 0 :(得分:1)

据我所知,但是您可以通过{{3}}来定义自己。

在您的应用中,您可能需要以黑体字添加元素:

struct ContentView : View {

    @State var url: String = "https://robohash.org/random.png"
    @State var image: URLImage = URLImage()

    var body: some View {
        VStack {
            Button(action: {
                self.url = "https://robohash.org/\(Int.random(in: 0 ..< 10)).png"
                self.image.imageLoader.load(url: URL(string: self.url)!)
            }) {
                Text("Get Random Robot Image")
            }

            image
        }
    }
}

app/ __init__.py templatetags/ __init__.py text_utils.py文件可能只是空的。在__init__.py文件中,您可以编写:

text_utils.py

然后在模板中,可以将模板过滤器用于:

# app/templatetags/text_utils.py

from django.template import Library
from django.template.defaultfilters import stringfilter

register = Library()

@register.filter(is_safe=True)
@stringfilter
def truncatechars_middle(value, arg):
    try:
        ln = int(arg)
    except ValueError:
        return value
    if len(value) <= ln:
        return value
    else:
        return '{}...{}'.format(value[:ln//2], value[-((ln+1)//2):])

如果字符数为 ,则会在末尾添加一个额外的字符,例如:

{% load text_utils %}
{{ word|truncatechars_middle:4 }}