繁体   English   中英

用于循环的 Django 模板

[英]Django template for loop

我有一个模板,可以在其中获取某些变量。 一个变量是 instance.category ,它输出:“words words words”,它们是按间距分割的值。

当我使用下面的代码时,我得到的是一个字母一个字母,而不是单词。

{% for icon in instance.category  %}
  <p>{{ icon }}</p>
{% endfor %}

输出

<p>w</p>
<p>o</p>
<p>r</p>
<p>d</p>
<p>w</p>
....

我需要:

<p>word</p>
<p>word</p>
<p>word</p>

Django插件代码

from cmsplugin_filer_image.cms_plugins import FilerImagePlugin
from cms.plugin_pool import plugin_pool
from django.utils.translation import ugettext_lazy as _
from models import Item

class PortfolioItemPlugin(FilerImagePlugin):
    model = Item
    name = "Portfolio item"
    render_template = "portfolio/item.html"
    fieldsets = (
        (None, {
            'fields': ('title', 'category',)
        }),
        (None, {
            'fields': (('image', 'image_url',), 'alt_text',)
        }),
        (_('Image resizing options'), {
            'fields': (
                'use_original_image',
                ('width', 'height', 'crop', 'upscale'),
                'use_autoscale',
            )
        }),
        (_('More'), {
            'classes': ('collapse',),
            'fields': (('free_link', 'page_link', 'file_link', 'original_link', 'target_blank'),)
        }),
    )

plugin_pool.register_plugin(PortfolioItemPlugin)

任何帮助表示赞赏!

如果您的分隔符始终是" "category是一个字符串,则您实际上并不需要自定义模板过滤器。 您可以简单地调用不带参数的split

{% for icon in instance.category.split %}
  <p>{{ icon }}</p>
{% endfor %}

您将字符串instance.category传递到模板中,然后迭代其字符。

相反,将列表传递给模板: instance.category.split()它将把你的words words words字符串拆分成列表['words', 'words', 'words']

>>> s = "words words words"
>>> s.split()
['words', 'words', 'words']

或者,您可以定义一个自定义过滤器,将字符串拆分为列表:

from django import template
register = template.Library()

@register.filter
def split(s, splitter=" "):
    return s.split(splitter)

然后,以这种方式在模板中使用它:

{% for icon in instance.category|split %}
    <p>{{ icon }}</p>
{% endfor %}

我知道这是一个迟到的答案,但它可能对某人有所帮助(这是我遇到的问题)。 如果你有一个点的形式:(x, y)。 那么你需要:

{% for x, y in points %}
    There is a point at {{ x }},{{ y }}
{% endfor %}

对于键值对:

{% for key, value in data.items %}
    {{ key }}: {{ value }}
{% endfor %}

来源: 这里(检查部分)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM