8

テンプレートタグに関してdjangoの問題があります。modal_form4つの引数で名前が付けられたテンプレートタグがあります。このテンプレートタグは、次のような基本的な変数で完全に機能します。

{% modal_form "clients" contact_form "Contacts" "contact" %}

しかし、次のようにカスタムテンプレートタグ内の変数をフィルタリングしようとすると機能しません。

{% modal_form "parameters" form_dict|key:parameter parameter name_dict|key:parameter %}

このカスタムフィルターは、タグの外側でも完全に機能します(このフィルターは、特定のキーでdictの値を取得します)。このエラーがあります:

レンダリング中にVariableDoesNotExistがキャッチされました:キー[form_dict | key:parameter]のルックアップに失敗しました

たぶん私は内部のフィルターをサポートするために別の方法でタグを書く必要がありますか?

これはタグの私のコードです:

def modal_form(app, object_form, object_name, object_verbose_name):
    return { 'app': app, 'object_form': object_form, 'object_name': object_name, 'object_verbose_name': object_verbose_name }

register.inclusion_tag('tags/modal_form.html')(modal_form)

そして、フィルターの私のコード:

def key(d, key_name):
    try:
        value = d[key_name]
    except KeyError:
        #from django.conf import settings

        #value = settings.TEMPLATE_STRING_IF_INVALID
        value = 0

    return value
key = register.filter('key', key)

あなたはなにか考えはありますか ?より多くのコードが必要ですか?

よろしくお願いします。

4

1 に答える 1

10

タグとフィルターが別々に正常に機能する場合は、次のステートメントで使用してみてください。

{% with var_one=form_dict|key:parameter var_two=name_dict|key:parameter %}
    {% modal_form "parameters" var_one parameter var_two %}
{% endwith %}
于 2012-09-03T13:52:00.353 に答える