Django使用模板标记拆分textfield

2024-06-01 01:29:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道我可以用{value| trun关键词:x}}截断给定字数后的textfield。如果我想在课文中间用点东西,可以吗?就像在python中使用字符串

>>>string[:2]
>>>something in between
>>>string[2:]

但是使用模板标记是因为我正在迭代for循环而不能在视图中传递它?在

谢谢


Tags: 字符串in标记模板forstringvaluebetween
1条回答
网友
1楼 · 发布于 2024-06-01 01:29:57

这里需要一个custom template filter。在

下面是一个基于^{}过滤器实现的简单示例:

from django import template
from django.template.defaultfilters import stringfilter
from django.utils.text import Truncator

register = template.Library()

@register.filter(is_safe=True)
@stringfilter
def sandwich(value, args):
    length, cutlet = args.split(',')
    length = int(length)
    truncated_value = Truncator(value).words(length, truncate='')
    return ' '.join([truncated_value, cutlet, value[len(truncated_value):].strip()])

输出示例:

^{pr2}$

注意,Django不允许在模板过滤器中传递多个参数,这就是为什么它们被作为逗号分隔的字符串传递,然后被解析。在这里查看更多关于这个想法的信息:How do I add multiple arguments to my custom template filter in a django template?

另外,如果字符串中只传递了一个参数,length值无法转换为int等,则可能需要捕捉可能的异常

相关问题 更多 >