से डेटा भेजें मुझे इस समस्या को हल करने के लिए JSON पता है, लेकिन मुझे इसे लागू करने में समस्याएं हैं। यहाँ मेरी दृष्टिकोण का विस्तार है:पायथन से जावास्क्रिप्ट (JSON)
- डाटा अजगर
- के बाद से डेटा का आकार गतिशील है में गणना कर रहे हैं, इसलिए मैं अपने आउटपुट के लिए अतिरिक्त HTML तालिका पंक्तियों बनाने के लिए JavaScript का उपयोग करने की जरूरत है। नतीजतन, मुझे डेटा को 'देखने' के लिए जावास्क्रिप्ट को जाने के लिए पायथन से जावास्क्रिप्ट तक डेटा पास करने की आवश्यकता है।
एचटीएमएल कोड (नीचे उत्पादन पृष्ठ बनाने के लिए मेरी HTML कोड का एक खंड है):
class OutputPage(webapp.RequestHandler):
def func (a,b):
return a+b #just an example
def get(self):
form = cgi.FieldStorage()
chem_name = form.getvalue('chemical_name')
Para1 = form.getvalue('Para1') #get values from input page--user inputs
Para1 = float(Para1)
Para2 = form.getvalue('Para2') #get values from input page--user inputs
Para2 = float(Para2)
out = func (Para1,Para1)
out_json=simplejson.dumps(out) # I need to send out to JavaScript
#writ output page
templatepath = os.path.dirname(__file__) + '/../templates/'
html = html + template.render (templatepath + 'outputpage_start.html', {})
html = html + template.render (templatepath + 'outputpage_js.html', {})
html = html + """<table width="500" class='out', border="1">
<tr>
<td>parameter 1</td>
<td> </td>
<td>%s</td>
</tr>
<tr>
<td>parameter 2</td>
<td> </td>
<td>%s</td>
</tr>
</table><br>"""%(Para1, Para2)
html = html + template.render(templatepath + 'outputpage_end.html', {})
#attempt to 'send' Python data (out_json) to JavaScript, but I failed.
html = html + template.render({"my_data": out_json})
self.response.out.write(html)
app = webapp.WSGIApplication([('/.*', OutputPage)], debug=True)
जावास्क्रिप्ट कोड (मैं जावास्क्रिप्ट का उपयोग मक्खी फ़ाइल नाम पर अतिरिक्त जानकारी के तालिकाएं बनाने के लिए: 'outputpage_js। एचटीएमएल '):
<script>
<script type='text/javascript'>
$(document).ready(function(){
//I assume if my Json statement works, I should be able to use the following argument to create a HTML row
$('<tr><td>Parameter 2</td><td> </td><td>out_json</td>').appendTo('.app')
</script>
सहायता के लिए धन्यवाद!
try:
import simplejson as json
except:
import json
out = {'key': 'value', 'key2': 4}
print json.dumps(out)
संपादित करें: रूप tadeck ने बताया
क्या आप समझा सकते हैं, आप उसी टेम्पलेट में डेटा को पारित करने का प्रयास क्यों कर रहे हैं जो HTML कोड उत्पन्न करेगा? मुझे आपके प्रश्न में कोई गतिशील लोडिंग (जैसे AJAX) दिखाई नहीं दे रहा है, केवल आवश्यक जावास्क्रिप्ट कोड नहीं है जो उस टेम्पलेट का हिस्सा उत्पन्न करेगा जिसे आप पाइथन का उपयोग करके उत्पन्न नहीं कर पाएंगे। क्या मैं सही हूँ? – Tadeck
@Tadeck, जावास्क्रिप्ट का उपयोग करने का कारण यह है क्योंकि मुझे HTML टेबल बनाने के लिए जावास्क्रिप्ट का उपयोग करने की आवश्यकता है। इसके अलावा, मेरे डेटा का आकार गतिशील है। तो मुझे लगता है कि जावास्क्रिप्ट को डेटा पास करने के लिए JSON का उपयोग करना बेहतर है और इसे इसे संभालने दें। इसके अलावा, मुझे आंकड़े उत्पन्न करने के लिए जेक्प्लॉट का उपयोग करने की भी आवश्यकता है। वर्तमान में, मैं एक छिपी हुई HTML तालिका में सभी मान उत्पन्न करता हूं और आईडी नामों का चयन करके उन्हें प्राप्त करने देता हूं। लेकिन मुझे लगता है कि ऐसा करने का एक बेहतर तरीका होना चाहिए। –
@ टाओ, डेटा गतिशील रूप से अद्यतन है? मतलब क्या उपयोगकर्ता बिना किसी पृष्ठ रीफ्रेश के फ्लाई पर डेटा परिवर्तन देखेगा? यदि यह गतिशील है, तो आपको JSON डेटा को उस URL से अनुरोध करने के लिए AJAX कोड की आवश्यकता होगी जो केवल JSON (HTML नहीं) लौटाता है। यदि पृष्ठ लोड होने पर डेटा ज्ञात होता है, तो आपको केवल अपने पृष्ठ टेम्पलेट में जावास्क्रिप्ट डेटा संरचना जोड़ने की आवश्यकता है। कोई JSON या AJAX आवश्यक नहीं है। – jiggy