2013-08-28 16 views
6

私は特定の変数を戻すテンプレートを持っています。 1つの変数はinstance.categoryで、 "words words words"という値を出力します。ループのDjangoテンプレート

私は以下のコードを使用すると、手紙ではなく、言葉で手紙を受け取ります。

{% 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) 

すべてのヘルプは歓迎です!

+0

カテゴリを表示するビューを表示できますか? –

+0

FilerImageプラグインをオーバーライドして、ポートフォリオ項目の追加フィールドを追加しました。これはあなたを助けますか? –

答えて

12

セパレータが常に" "で、categoryが文字列の場合、実際にはカスタムテンプレートフィルタは必要ありません。パラメータなしでsplitを呼び出すことができます。

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

そうですよ!どうもありがとう。 –

+0

+1素敵で簡単です! – alecxe

6

文字列instance.categoryをテンプレートに渡してから、その文字を繰り返し処理します。代わりに

、テンプレートにリストを渡す:instance.category.split()リスト['words', 'words', 'words']にあなたのwords words words文字列を分割なる:

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

それとも、あなたがリストに文字列を分割しますcustom filterを定義することができます:次に

from django import template 
register = template.Library() 

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

、テンプレートでこのようにそれを使用する:

+0

私はカスタムフィルタを使用していますが、このエラーが発生します: 'for'ステートメントは 'for x in y'の形式を使用します:instance.category | splitのアイコン: –

+0

@NielsenRamon確かに、更新された答えを見てください。 – alecxe

+0

でも、同じエラーです:/ –

関連する問題