आप डीजेंगो वेबपैड में JSON डेटा को सुरक्षित रूप से कैसे प्रस्तुत करते हैं?Django टेम्पलेट्स में जेएसओएन के अंदर एचटीएमएल के साथ जेएसओएन का सुरक्षित रूप से उपयोग करना
django में सर्वर पर मैं JSON डेटा उत्पन्न करता हूं और फिर उस JSON डेटा को django टेम्पलेट में प्रस्तुत करता हूं। जेएसओएन में कभी-कभी एचटीएमएल के स्निपेट होते हैं। अधिकांश समय, यह ठीक है, हालांकि </script>
टैग जेएसओएन डेटा के अंदर होता है जब यह प्रस्तुत किया जाता है, तो यह आसपास के जावास्क्रिप्ट को नष्ट कर देता है।
...
सर्वर पर, अजगर में मैं इस होगा:
template_data = {
'my_json' : '[{"my_snippet": "<b>Happy HTML</b>"}]'
}
# pass the template data to the django template
return render_to_response('my_template.html', template_data, context_instance = c)
और फिर टेम्पलेट में:
<script type="text/javascript">
var the_json = {{my_json|safe}};
</script>
... some html ...
परिणामस्वरूप एचटीएमएल ठीक काम करता है और इस तरह दिखता है:
<script type="text/javascript">
var the_json = [{"my_snippet": "<b>Happy HTML</b>"}];
</script>
... some html ...
हालांकि, आपको समस्याएं आ रही हैं, सर्वर पर, JSON इस तरह दिखता है:
template_data = {
'my_json' : '[{"my_snippet": "Bad HTML</script>"}]'
}
return render_to_response('my_template.html', template_data, context_instance = c)
अब, जब यह प्रदान की गई है, आप प्राप्त करेंगे:
<script type="text/javascript">
var the_json = [{"my_snippet": "Bad HTML</script>"}];
</script>
... some html ...
JSON कोड के भीतर समापन स्क्रिप्ट टैग को संपूर्ण स्क्रिप्ट ब्लॉक को बंद करने के रूप में माना जाता है। तब आपकी सभी जावास्क्रिप्ट तोड़ जाएगी।
टेम्पलेट में टेम्पलेट डेटा पास करते समय </script>
के लिए एक संभावित समाधान जांचना है, लेकिन मुझे लगता है कि एक बेहतर तरीका है।
आप json के रूप में (AJAX के माध्यम से) यह काम कर सकता है या
अजगर वस्तुओं ग्राहक है कि मैं का उपयोग करने के लिए सीधे प्राप्त करने के लिए एक उपयोगी फिल्टर यह है इसे जावास्क्रिप्ट फ़ाइल के रूप में प्रस्तुत करें (फिर इसे स्क्रिप्ट टैग का उपयोग करके शामिल करें)। – DanielB