在django-templates中将一个字符串拆分成一个列表

eimct9ow  于 2023-05-19  发布在  Go
关注(0)|答案(2)|浏览(146)

基本上,我有一个冒号分隔的变量被传递到我的模板,我想通过循环来显示每个单独的元素。
我希望能够提取这些名字,然后在我的模板中执行逻辑。
如果我可以使用python,我会做一些类似的事情(注意:file_type是我模板中的变量):

file_type = "PDF:DOC:XLS"
for tipe in file_type.split(":"):
   if tipe == "PDF":
      print "<img src='pdf'/>"
   elif tipe == "DOC":
      print "<img src='doc'/>"
   elif tipe == "XLS":
      print "<img src='xls'/>"
   else:
      print "<img src='unrecognized'/>"

那么基本上,django-templates中有split函数吗?或者有人想出了一个巧妙的方法来做到这一点?我什么都没找到。谢谢!

krugob8w

krugob8w1#

这是自定义模板标记或筛选器的作业。如果你发现自己在想“如果我可以在这里使用Python”,这就是你需要一个自定义标签/过滤器的标志。你可以或多或少地使用上面给予的代码,只需要返回值而不是打印它。

cqoc49vn

cqoc49vn2#

在Django中,split并不是一个过滤器,但是你可以创建它,它会完全按照你的意愿去做。这是你需要做的一个例子;
在views.py
从django.template.defaulttags导入寄存器

@register.filter(name='split')

def split(value, key): 

    value.split("key")
    return value.split(key)

在html页面中,使用拆分筛选器,如下所示:

{% with file_type|split:":" as types %}
    {% for type in types %} 
        {{ type }}،                        
    {% endfor %}
{% endwith %}

来源:https://gist.github.com/linuxkathirvel/8127c40fdad028bbb79bec24f36eee1c

相关问题