2015-05-28 29 views
6

Django şablonu değişkenlerini geçmek ve ben modüllerin benim Django app tüm JS altyapısını hareketli düşünüyorum. Yapmanın basit bir yolu, her Django şablon için bir webpack modül oluşturmak (veya görmek) ve her sayfada tek <script> etiketine sahip olduğu görülmektedir.nasıl sadece WebPack modülü hakkında öğreniyorum bir WebPack modülüne

Ancak, bu webpack modülleri Django şablon değişkenlerinin içeriğini geçen bir yol bulmaya çalışıyorum. Daha önce ben bu değişkenler inlined olabilirdi:

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

Şimdi, sadece var:

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

Buldum bir potansiyel çözüm için tek kök işlevini verir bir kütüphane olmak için webpack modülünü tanımlamaktır tarayıcıdaki genel ad alanı. Sonra JS değişkeni içine Django değişkenleri koymak için bir satır içi script etiketi kullanabilir ve ihraç işleve argümanlar olarak bu geçmektedir.

Bu şekilde şeyler yapmanın sakar bir yol gibi hissediyor. Bunu nasıl halledebileceğime dair herhangi bir fikir var mı?

Teşekkürler! İşte

+0

Ben tam olarak aynı sorun vardı: benim django şablonu, ben aşağıdakileri ekleyin. React kullanarak başka bir sistem için bir eklenti yazıyorum. (Bu, bütün şovu kontrol etmeyi seven Ember ile kıyaslandığında bunu yapmak çok kolaydı). Eklenti uzatma noktaları bir çift templated değere dayanıyordu. Webpack paketimi kütüphane olarak oluşturdum ve argümanlar, eksik şablon değerleri olan tek bir işlevi dışa aktardım. Tamamen çok tuhaf davrandığına inanıyorum, ama sanırım temelde farklı iki yaklaşımı birleştiriyoruz, bu yüzden beklenilmesi gereken bir şey! – dpwrussell

cevap

2

Ben dpwrussel en Sorunun yorumlarda ipucu ve this question dayanarak yaptık nasıl: Ben aktarıyorum benim modülde

, bunu yapın: Sonra

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

window.render_my_thing = function(properties) { 
    ReactDOM.render(...) 
} 

yılında

<script>                   
    render_my_thing({ 
     property1: "{{ property1 }}", 
     property2: "{{ property2 }}", 
    })                 
</script>