2012-09-03 10 views
5

Mam problem z django dotyczący znaczników szablonów. Mam tag szablonu o nazwie modal_form z 4 argumentami. Ten szablon działa idealnie z podstawowych zmiennych, takich jak:Jak użyć filtra szablonu do niestandardowego tagu szablonu?

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

Ale to nie działa, gdy próbuję filtrować zmienną wewnątrz mojego własnego szablonu tagu jak:

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

Zwyczaj ten filtr działa również doskonale poza tagiem (ten filtr dostaje wartość dict przy określonym kluczu). mam ten błąd:

Caught VariableDoesNotExist while rendering: Failed lookup for key [form_dict|key:parameter]

Może muszę napisać tag w inny sposób wspierania filtra w środku?

To jest mój kod dla tagu:

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) 

A mój kod dla filtra:

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) 

Czy macie jakieś pomysły? Czy chcesz więcej kodu?

Z góry dziękuję za odpowiedzi.

+1

Możemy tylko pomóc, jeśli pisać kod; w przeciwnym razie jest to tylko gra w zgadywanie. –

+0

Czy możesz także udostępnić swój niestandardowy tag i kod filtru – FallenAngel

+0

Edytowałem mój post z kodami, thx –

Odpowiedz

7

Jeśli tag i filtr działa prawidłowo osobno, spróbuj użyć with statement:

{% with var_one=form_dict|key:parameter var_two=name_dict|key:parameter %} 
    {% modal_form "parameters" var_one parameter var_two %} 
{% endwith %} 
+0

To działa idealnie, dziękuję –

+0

@MaximeFavier wielki, zapraszamy –

+2

Aby dodać do powyższego, poniżej pozwala ustawić wynik tag szablonu używa go w filtrze. ' {% z var = 'temp_tag arg1 arg2'%} {{var | filter_name:" Str "}} {% endwith%} ' – FearlessFuture

Powiązane problemy