2012-08-27 19 views
6

के भीतर समस्या से बच निकलने के लिए मुझे जावा टेम्पलेट में जावास्क्रिप्ट फ़ंक्शन डालना होगा। इस समारोह के पहले तर्क स्ट्रिंग है, इसलिए मैं अपने * .mako फ़ाइल में लिखने (dict (FIELD_NAME = 'geom')):मैक्रो पिरामिड

init_map(
    '${field_name}' 
); 

लेकिन यह की तरह loks जब मैं अपने html पृष्ठ देखें:

init_map(
    'geom' 
) 

मैं इस मामले में कैसे बच सकता हूं?

from pyramid.renderers import render 
render('georenderer/map.mako', template_args) 

उत्तर

5

आपको लगता है कि आपको अपनी अभिव्यक्ति में उद्धरण शामिल करना होगा।

dict(field_name=json.dumps('geom')) 

और अपने खाके में:: आप उत्पादन मान्य JavaScript शाब्दिक को json मॉड्यूल का उपयोग कर सकते हैं

init_map(
    ${field_name | n} 
); 

उद्धरण तो .dumps() समारोह द्वारा उत्पन्न कर रहे हैं, और | n फिल्टर सुनिश्चित करता है कि वे बच गए नहीं कर रहे हैं ; आप पहले से ही अपने मूल्य जावास्क्रिप्ट को सुरक्षित कर चुके हैं, आपको HTML-सुरक्षित की आवश्यकता नहीं है।

>>> import json 
>>> print json.dumps(u'Quotes and unicode: " \u00d8') 
"Quotes and unicode: \" \u00d8" 
+0

उत्तर के लिए धन्यवाद, लेकिन मेरे मामले में समस्या शायद नेस्टेड मको टेम्पलेट्स से जुड़ा हुआ था। जब मैंने घोंसले के बिना एक टेम्पलेट बनाया है तो सब ठीक काम बन जाएंगे। – drnextgis

+0

@ मार्टजिन पीटर उद्धरण के बारे में मत भूलना '$ {field_name | n} ''... :) –

+0

@VitaliPonomar: नहीं! उद्धरण json.dumps मॉड्यूल द्वारा प्रदान किए जाते हैं! –

1

n फिल्टर का प्रयास करें:

प्रतिपादन निम्नलिखित तरीके से करता है। the docs के अनुसार, यह बचने अक्षम (या किसी अन्य डिफ़ॉल्ट फ़िल्टरिंग):

${field_name | n} 

अद्यतन: माफ करना, मैं नोटिस नहीं किया था कि उद्धरण चारों ओर अभिव्यक्ति कर रहे हैं। और अब यह बहुत अजीब लगता है ...

+1

समस्या यह है कि उद्धरण के आसपास * * अभिव्यक्ति भाग निकले कर रहे हैं:

अतिरिक्त लाभ यह है कि मॉड्यूल आपकी जावास्क्रिप्ट मूल्यों में किसी भी उद्धरण के साथ-साथ बच जाएंगे, और यूनिकोड ठीक से संभाल रहा है। –

+0

तो बिल्कुल और यह पिरामिड मुद्दे की तरह दिखता है, क्योंकि माको के माध्यम से सीधे प्रस्तुत करना ठीक काम करता है। – drnextgis

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