2016-08-23 6 views
0

ビューからテンプレートにコンテキスト変数を渡して、テンプレートが表示する内容を指示したいとします。ビューコンテキスト変数をDjangoのテンプレート変数として評価するにはどうすればよいですか?

私は、リストページテーブルの列数と、使用するヘッダーテキストを指定するコンテキストリスト変数column_headersを持っています。

context['column_list'] = [ 
    _('Animal'), 
    _('Owner'), 
    _('Reason'), 
    _('Time'), 
    _('Vet'), 
    _('Status') 
] 

Iは、例えば、対応する列の各セルのために含めるためにどの変数テンプレートを伝える関連リスト変数を含めるたい:変数FOO.clientが現れるよう

context['cell_vars'] = [ 
    'patient', 
    'client', 
    'reason', 
    'start_time', 
    'attending_staff', 
    'status' 
] 

'Owner'列にあり、FOO.attending_staff'Vet'列などに表示されます。

これを行うと、すべてのリストを処理するための単一のlist.htmlページができます。

だから、私の質問は、これは良いアイデアですし、もしそうなら、私はそう

{% for row in rows %} #loop over list data 
    {{ row.attending_staff }} #work fine, but... 
    {{ row.SOME_VARIABLE_THAT_HAS_VALUE_OF_'attending_staff' }} #doesn't 
{% endfor %} 

すなわちコンテキスト変数として提示「文字列」を評価するに取り掛かるだろうか、x='attending_staff'場合、私がする必要があるかどうかでありますそうIMOかもしれない、それは実際row.attending_staff

このためのユースケースは非常に定義されて評価した(データはループ変数rowに既にあるのでないデータ検索)のみを表示ロジックを含む​​ように変数を評価することができますテンプレートに適しています。

これは、現在私が現在10x foo_list.htmlのページを持っているのではなく、リストのすべてを処理するための単一の 'list.hml'テンプレートを持つことができます。テーブル構造、ループロジック、アイコン、リンク、CSSクラス名など)。

答えて

0

私はcustom tags or filtersが解決

例えば:以下

@register.filter 
def settings_value(name): 
    return getattr(settings, name, "") 

{% load your_filters %} 
{{ "MY_SETTINGS_NAME"|settings_value }} 
0

のようなテンプレートで使用できることだと思いますが、この方法でそれをやろうでしたか?または、そのオプションがない可能性があります。

# Python script 
context['column_list'] = [ 
    _('Animal'), 
    _('Owner'), 
    _('Reason'), 
    _('Time'), 
    _('Vet'), 
    _('Status') 
] 

context['cell_vars'] = [ 
    'patient', 
    'client', 
    'reason', 
    'start_time', 
    'attending_staff', 
    'status' 
] 

g_context = zip(context['column_list'], context['cell_vars']) 

# HTML 
{% for column, var in g_context %} 
    {{ column }} 
    {{ var }} 
{% endfor %} 

あなたはそれを求めていますか?

関連する問題