2015-05-28 15 views
6

पर Django टेम्पलेट चर को कैसे पास करें मैं बस वेबपैक मॉड्यूल के बारे में सीख रहा हूं, और मैं अपने Django ऐप के मॉड्यूल में पूरे जेएस बुनियादी ढांचे को स्थानांतरित करने के बारे में सोच रहा हूं। ऐसा लगता है कि ऐसा करने का एक सीधा तरीका प्रत्येक Django टेम्पलेट (या देखें) के लिए एक वेबपैक मॉड्यूल बनाना है, और प्रत्येक पृष्ठ पर एक <script> टैग है।वेबपैक मॉड्यूल

हालांकि, मैं इन वेबपैक मॉड्यूल में Django टेम्पलेट चर की सामग्री को पारित करने का एक तरीका खोजने का प्रयास कर रहा हूं। इससे पहले मैं इन चरों है inlined सकता है:

<script> 
//Sample code.. 
var arr = []; 
{% for s in vars %} 
arr.push(s); 
{% endfor %} 
</script> 

अब, मैं केवल है:

<script src="temp.js"></script> 

एक संभावित समाधान मैंने पाया एक पुस्तकालय है कि करने के लिए एक भी जड़ समारोह का निर्यात होने की webpack मॉड्यूल को परिभाषित करने के लिए है ब्राउज़र में वैश्विक नामस्थान। फिर Django चर को जेएस वैरिएबल में डालने के लिए इनलाइन script टैग का उपयोग करें, और इसे निर्यात किए गए फ़ंक्शन में तर्क के रूप में पास करें।

यह किसी भी तरह से चीजों को करने का एक बेकार तरीका लगता है। इस विचार के बारे में कोई विचार है कि मैं इसे कैसे बेहतर तरीके से संभाल सकता हूं?

धन्यवाद!

+0

मुझे बिल्कुल वही समस्या थी। मैं प्रतिक्रिया का उपयोग कर किसी अन्य प्रणाली के लिए एक प्लगइन लिख रहा हूं (मुझे वास्तव में यह पसंद है कि एम्बर कहने की तुलना में ऐसा करना आसान हो गया था जो पूरे शो को नियंत्रित करना पसंद करता है) जो django templating का उपयोग करता है। प्लगइन विस्तार बिंदु कुछ templated मूल्यों पर भरोसा किया। मैंने लाइब्रेरी के रूप में अपना वेबपैक बंडल बनाया और एक एकल फ़ंक्शन निर्यात किया जो तर्क के रूप में लेता है, लापता टेम्पलेट मान। मैं पूरी तरह से सहमत हूं कि यह बहुत बेकार लगता है, लेकिन मुझे लगता है कि हम दो मूलभूत रूप से अलग दृष्टिकोणों को विलय कर रहे हैं, इसलिए उम्मीद की जा रही है! – dpwrussell

उत्तर

2

यहाँ कैसे मैं इसे किया है, प्रश्न की टिप्पणियों में dpwrussel के संकेत और this question पर आधारित है:

मेरी मॉड्यूल है कि मैं कर रहा हूँ आयात करने में, मैं यह कर:

var React = require('react') 
var ReactDOM = require('react-dom') 

window.render_my_thing = function(properties) { 
    ReactDOM.render(...) 
} 
तब में

मेरा django टेम्पलेट, मैं निम्नलिखित जोड़ता हूं:

<script>                   
    render_my_thing({ 
     property1: "{{ property1 }}", 
     property2: "{{ property2 }}", 
    })                 
</script> 
संबंधित मुद्दे