2009-09-14 7 views
23

मैं एक दृश्य में एक चर (श्रेणी) को परिभाषित करने के लिए lxml लाइब्रेरी का उपयोग कर रहा हूं। कस्टम गुणों को पुनर्प्राप्त करने के लिए lxml एक विधि .get प्रदान करता है। मैं तो जैसे टेम्पलेट में इसका इस्तेमाल करना चाहते हैं:Django में टेम्पलेट चर पर किसी विधि के लिए तर्क कैसे पास करें?

{{ category.get("foo") }} 

मुझे पता है कि यह कोष्ठकों का प्रयोग करने अनावश्यक है जब टेम्पलेट वैरिएबल का उपयोग कर, लेकिन मैं निम्नलिखित त्रुटि मिलती है:

{{ category.get "foo" }} 

Could not parse the remainder: ' "foo"' from 'category.get "foo"'

मुझे लगता है कि मेरे वाक्यविन्यास में कुछ गड़बड़ है लेकिन Google को कोई मदद नहीं मिली है। Django दस्तावेज़ों का कहना है कि .

+0

Django टेम्पलेट फ़िल्टर में उपयोग किया गया वाक्यविन्यास तर्कों के लिए ":" है, इसलिए मुझे लगता है कि अगर कोई इसे लागू करना है, तो यह {{category.get: foo}} होगा। लेकिन, यह अस्तित्व में नहीं है। शायद आपको इसे जोड़ना चाहिए? – slacy

+0

संभावित डुप्लिकेट [Django टेम्पलेट में तर्क लेने वाले फ़ंक्शन को कैसे कॉल करें?] (Http://stackoverflow.com/questions/2468804/how-to-call-function-that-takes-an-argument-in- ए-डीजेंगो-टेम्पलेट) –

उत्तर

32

का उपयोग कर विधियों को देखा जाता है, आप इस तरह एक कॉल करने योग्य विशेषता के लिए एक तर्क पारित नहीं कर सकते हैं। या तो दृश्य में मूल्य खींचें, या इसे करने के लिए एक कस्टम टेम्पलेट टैग लिखें।

+0

क्या मौजूदा चर (जैसे request.user) या वर्तमान संदर्भ ऑब्जेक्ट की तरह अन्य चरों तक पहुंचने का कोई तरीका है? – slacy

+1

आप एक कस्टम templatetag –

+0

में कर सकते हैं आपके पास पहले से ही request.user – OllyTheNinja

12

यहाँ मैं एक हैक लिखा एक समारोह फोन और तर्क http://www.sprklab.com/notes/13-passing-arguments-to-functions-in-django-template/

+0

तक पहुंच होनी चाहिए यह किसी भी तरह से मिश्रण कोड और सामग्री की तरह दिखता है, लगभग उसी तरह PHP ऐसा करता है। तुम क्या सोचते हो? – dotz

+3

और लूप के लिए कोड नहीं हैं? – Blaze

15

मैं डिजाइन से तर्क को अलग करने का दर्शन से सहमत पारित करने के लिए, लेकिन वहाँ एक अपवाद है। मैं वर्तमान में एक मॉडल के लिए get_image (ऊंचाई = xxx, width = xxx) विधि लिख रहा हूं। जाहिर है, यह छवि के आकार को अंतिम चरण के रूप में तय करने के लिए टेम्पलेट डिजाइनर पर होना चाहिए। हालांकि मुझे लगता है कि सही काम करना एक कस्टम टैग लिखना है, लेकिन क्यों प्रतिबंधित है?

+1

पूरी तरह से सच है। यह एक "उत्तर" नहीं है, एक टिप्पणी की तरह, लेकिन +1 –

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