特定の変数を取得するテンプレートがあります。 1つの変数はinstance.categoryで、次の値を出力します。
以下のコードを使用すると、単語ではなく文字ごとに返されます。
{% 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 %}
_