javascript - Ajax script to store user info to the DB in Django -
अवलोकन:
मेरे डीजेंगो प्रोजेक्ट में एक समाचार में पोस्ट प्रदर्शित करता है फ़ीड्स पृष्ठ, मैं चाहता हूं कि उपयोगकर्ता "चुनना" पोस्ट (जैसे Pinterest में पिन) करने में सक्षम हों। यह विचार एक "चुनना" बटन बनाने वाला है जो स्वचालित रूप से सूचनाएं संग्रह तालिका (नीचे परिभाषित मॉडल) में संग्रहीत करता है।
क्लास पोस्ट (models.Model): चुनता है = मॉडल। कई टॉममैफ़ीफिल्ड (उपयोगकर्ता, के माध्यम से = 'पिक', संबंधित_नाम = 'यूज़रप्रिक्स') ... क्लास उपयोगकर्ता (मॉडल। मॉडल): ... और
वर्ग चुनें (models.Model): user = models.ForeignKey (उपयोगकर्ता) पोस्ट = models.ForeignKey (पोस्ट) pick_date = models.DateTimeField ( 'तिथि चुना', डिफ़ॉल्ट = datetime.datetime.now ())
समस्या
समस्या स्वचालित रूप से और सीधे जानकारी भेजने के लिए है उपयोगकर्ता को कोई भी फ़ॉर्म भरने के लिए बिना पूछे बटन को दबाकर बैकएंड पर।
प्रश्न
मैं समाचार फ़ीड में अजाक्स का उपयोग करना चाहता हूं HTML पृष्ठ, user.id, post.id और तारीख को प्राप्त करने के लिए जब डीबॉब की डीब की मेजबानी करता है, जब उपयोगकर्ता पोस्ट उठाता है (पिक बटन दबाकर)।
"post-text" itemprop = "text" क्या आप मुझे सही अजाक्स फ़ंक्शन और इसी डीजेंगो व्यू के लिए मार्गदर्शन कर सकते हैं? >
यह जानकर कि {{Post.id}}
पोस्ट का आईडी देता है, हमारा बटन है:
& lt; एक क्लास = "क्लिक" डेटा -id = "{{Post.id}}" वर्ग = "बीटीएन बीटीएन-मिनी बीटीएन-प्राथमिक" प्रकार = "बटन" & gt; चुनें & lt; / a & gt; JQuery कोड है: $ (दस्तावेज़) .ready (function () {$ ('। पर क्लिक करें')। क्लिक करें (फ़ंक्शन () {Console.log ("पोस्ट बना रहा है!") Var pickid; pickid = $ (this) .attr ("data-id"); $ .post ("create_date /", {pickid: pickid}, फ़ंक्शन (डेटा ) {चेतावनी ('बटन क्लिक दर्ज की गई।')});})});
और एक संभावित दृश्य:
def record_button_click (अनुरोध): यदि request.method == 'POST': pick_id = request.POST.get ( 'पिकिड') response_data = {} फॉर्म = पिक (पोस्ट_id = पिक_आईडी, यूज़र = अनुरोध.युजर) form.save () प्रतिक्रिया_डेटा ['परिणाम'] = 'पोस्ट सफल बनाओ!' रिटर्न एचटीटीपीआरपीएसपैक्शन (जेसनडेंप्स (रिस्पांस_डेटा), कंटेंट-टाइप = "एप्लिकेशन / जेएसन"): रिटर्न एचटीटीपीआरपीएसपैक्शन (जेसनडेंप्स ({"देखने के लिए कुछ नहीं": "ऐसा नहीं हो रहा है"}), कंटेंट-टाइप = "एप्लिकेशन / जेसन ")
Comments
Post a Comment