如何在django模板中分割字符串?

问题描述 投票:0回答:4

我正在尝试使用自定义模板过滤器拆分模板中的字符串。但我遇到了一个错误

    TemplateSyntaxError at /job/16/
'for' statements should use the format 'for x in y': for skill in form.instance.skills | split : ","

这是我的过滤器

@register.filter(name='split')
def split(value, key):
    """
        Returns the value turned into a list.
    """
    return value.split(key)

这是我的模板

<h4>Skills</h4>
{% for skill in form.instance.skills | split : "," %}
    {{ skill }}
{% endfor %}

谢谢

python django-templates django-filter django-1.5
4个回答
6
投票

Split 是一个自定义过滤器,不要忘记创建您的过滤器,并将其加载到您的 HTML 页面中。 Django 4.0 文档:https://docs.djangoproject.com/en/4.0/howto/custom-template-tags/

<h4>Skills</h4>
{% with form.instance.skills|split:"," as skills %}
    {% for skill in skills %}
        {{ skill }}<br>
    {% endfor %}
{% endwith %}

3
投票

提取字符串,使用filter cut:

<a href="tel://+1{{ phone|cut:'-' }}">Phone</a>

这将从字符串中删除脚本。


1
投票

我正在寻找如何在 Django 中使用分割过滤器,但我很难知道如何创建和注册过滤器。我尝试了很多解决方案,直到能够创建分割过滤器,我在这里发布如何做到这一点

在views.py中

from django.template.defaulttags import register

@register.filter(name='split')
def split(value, key): 
 
    value.split("key")
    return value.split(key)

然后在 HTML 中使用它,如前面非常好的答案中提到的

希望这有帮助

参考:https://gist.github.com/linuxkathirvel/8127c40fdad028bbb79bec24f36eee1c


-1
投票

直接 for 循环也可以,你只需删除语法中的空格即可:

    <h4>Skills</h4>
            {% for skill in form.instance.skills|split:"," %}
                {{ skill }}
              {% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.