2014-10-21 1 views
8

मैं React.js के साथ Django Rest Framework का उपयोग कर रहा हूं। मेरे पृष्ठ एक उपयोगकर्ता के प्रोफ़ाइल से पता चलता है, इस तरह API का उपयोग करके:मैं एक Django टेम्पलेट चर को एक प्रतिक्रिया स्क्रिप्ट में कैसे सम्मिलित करूं?

http://localhost:8000/api/profile/[pk]

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

मैं window.location.href जैसे फ़ंक्शन का उपयोग कर सकता हूं और अंत से संख्या पॉप कर सकता हूं, लेकिन क्या सर्वर से सीधे पीके पास करके ऐसा करने का कोई तरीका है, यानी, टेम्पलेट चर का उपयोग करके?

+0

या अपने react.js कोड में मॉड्यूल का उपयोग अपनी प्रवेश प्रक्रिया के दौरान आईडी अनुरोध कर सकता है JSON के माध्यम से इसे पाने और अनुरोध की अवधि के दौरान यह स्टोर ? मुझे आम तौर पर लगता है कि यदि आप JSON के साथ बातचीत कर रहे हैं और एपीआई को कार्यान्वित कर रहे हैं, तो यह केवल एक एपीआई होना चाहिए, न कि एक टेम्पलेटेड चीज। – jvc26

+0

@ jvc26 अभी मेरा प्रतिक्रिया कोड राउटर का उपयोग नहीं करता है, यह केवल एक विशेषता है जो किसी विशेष प्रोफ़ाइल के विवरण दिखाती है। शेष पृष्ठ django templating है। मेरा वर्तमान समाधान प्रतिक्रिया कोड धारण करने वाले तत्व में एचटीएमएल 5 डेटा टैग जोड़ना और वहां यूआरएल डालना है। बहुत सुंदर नहीं है लेकिन अभी के लिए काम कर रहा है। – YPCrumble

उत्तर

12

जब आप घटक प्रस्तुत करते हैं, तो आपको पीके को प्रोप के रूप में पास करना चाहिए।

<script> 
React.render(React.createElement(Profile, { 
    userId: "{{ userId }}", 
    urlPrefix: "/api/profile/" 
}), element); 
</script> 

उपयोगकर्ता को लाने के लिए एक बेहतर विकल्प हो सकता है, और फिर घटक प्रस्तुत करना हो सकता है।

superagent.get('/api/profile/{{ userId }}', function(res){ 
    React.render(React.createElement(Profile, 
     {user: res.body} 
    ), element); 
}); 

browserify साथ

, या तो आप एक स्क्रिप्ट टैग में डेटा शामिल हो सकता है, और का उपयोग करें कि अपने कोड में: -r ध्वज का उपयोग कर

<script>var _appData = {userId: "{{ userId }}"};</script> 

या निर्यात मॉड्यूल उदाहरण के लिए, superagent साथ (एपीआई में .require())।

# sh 
browserify -r react -r src/profile.js:profile.js 

// js 
b.require('react').require('src/profile.js', {expose: 'profile.js'}); 

और फिर, नियमित स्क्रिप्ट टैग

<script> 
var React = require('react'); 
var Profile = require('profile.js'); 

React.render(React.createElement(Profile, { 
    userId: "{{ userId }}", 
    urlPrefix: "/api/profile/" 
}), element); 
</script> 
+0

एचएम - अभी मैं "app.js" नामक एक फ़ाइल का उपयोग करता हूं जो ब्राउज़र के साथ बनाया गया है। मैं बस इसे अपने django टेम्पलेट से कॉल करता हूं जैसे '' इसलिए मुझे नहीं लगता कि यह समाधान काम करता है। क्या कोई और कामकाज है? – YPCrumble

+1

मैंने ब्राउज़र के साथ उपयोग के लिए कुछ उदाहरण जोड़े (और इसे 0.12/0.13 संगत होने के लिए अपडेट किया)। – FakeRainBrigand

+0

बहुत बढ़िया, धन्यवाद! – YPCrumble

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