2012-09-03 12 views
5

मेरे पास टेम्पलेट टैग से संबंधित एक django समस्या है। मेरे पासनामक एक टेम्पलेट टैग है जिसमें 4 तर्क हैं। इस टेम्पलेट टैग जैसी बुनियादी चर के साथ पूरी तरह से काम करता है:कस्टम टेम्पलेट टैग पर टेम्पलेट फ़िल्टर का उपयोग कैसे करें?

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

लेकिन यह काम नहीं करता है जब मैं की तरह मेरे कस्टम टेम्पलेट टैग के अंदर एक चर फिल्टर करने के लिए प्रयास करें: यह कस्टम फिल्टर भी पूरी तरह से काम करता है

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

टैग के बाहर (इस फ़िल्टर को एक विशिष्ट कुंजी पर एक ताना का मान मिलता है)।

Caught VariableDoesNotExist while rendering: Failed lookup for key [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) 

आप किसी भी विचार है? क्या आप और कोड चाहते हैं?

आपके उत्तरों के लिए अग्रिम धन्यवाद।

+1

हम केवल मदद कर सकते हैं अगर आप अपने कोड पोस्ट; अन्यथा यह सिर्फ एक अनुमान लगाने का खेल है। –

+0

क्या आप अपना कस्टम टैग और फ़िल्टर कोड भी साझा कर सकते हैं – FallenAngel

+0

मैंने कोड के साथ अपनी पोस्ट संपादित की है, thx –

उत्तर

7

अपना टैग और फिल्टर अलग से ठीक काम करता है, तो 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

यह पूरी तरह से काम करता है, धन्यवाद –

+0

@MaximeFavier महान, आपका स्वागत है –

+2

उपरोक्त में जोड़ने के लिए, नीचे आपको परिणाम सेट करने की अनुमति मिलती है एक टेम्पलेट टैग इसे फ़िल्टर में उपयोग करता है। ' {% = var = 'temp_tag arg1 arg2'%} {{var | filter_name:" Str "}} {% endwith%} ' – FearlessFuture

संबंधित मुद्दे