2013-07-24 10 views
14

यह ज्ञात है वहाँ Django टेम्पलेट टैग "url" का उपयोग करके एक यूआरएल के लिए निर्देशन की एक सूखी रास्ता है कि में जावास्क्रिप्ट वेरिएबल का मान जाओ, कहते हैं किDjango यूआरएल टेम्पलेट टैग

{% url "someview" arg1=X %} 

यहाँ, मैं करने के लिए "X" चाहते हैं जावास्क्रिप्ट चर का मान बनें, tmp कहें। लेकिन निम्नलिखित

<script> 
    ...{% url "someview" arg1=tmp %}... 
</script> 

मुझे टेम्पलेट टैग के अंदर मूल्य कैसे प्राप्त करना चाहिए?

+0

आप की कोशिश कर सकते: प्रश्न के संबंध में, यह कैसे मैं एक उदाहरण के मामले में जो tmp नामक एक चर में एक पैरामीटर के साथ एक नया पृष्ठ पर जावास्क्रिप्ट के साथ पुनः निर्देशित कर रहा है के लिए माइक ली समाधान का इस्तेमाल किया है '{ % url 'someview'%}? arg1 = tmp' – Marii

+1

क्या आप वाकई सही हैं? ऐसा लगता है कि कुछ व्याकरण गलती है। –

+0

मुझे खेद है, मैं भूल गया कि 'tmp' जावास्क्रिप्ट चर है, इसलिए: ' ' – Marii

उत्तर

33

मैं एक चाल है कि अधिकांश परिस्थितियों में काम कर सकते हैं पाया:

var url_mask = "{% url 'someview' arg1=12345 %}".replace(/12345/, tmp.toString()); 

यह साफ है, और यह सूखी सिद्धांत का उल्लंघन नहीं करती।

+1

साफ विचार - यह ध्यान देने योग्य है कि यह केवल तभी काम करेगा यदि 'arg1' संख्यात्मक हो सकता है, और यदि उलट यूआरएल में स्ट्रिंग के अन्य उदाहरण नहीं हैं "/ 12345 /"। –

+0

@ डोमिनिकरोडर मूल्य 12345 सिर्फ एक प्लेसहोल्डर है, यदि उलट यूआरएल में प्लेसहोल्डर होता है, तो उसे उस चीज़ के लिए बदलने के लिए पर्याप्त होगा जो वहां नहीं है। अगर arg1 संख्यात्मक नहीं हो सकता है तो यह क्यों काम नहीं करेगा? – guival

+0

मैंने यह कोशिश की है लेकिन मेरे मामले में कुछ भी काम नहीं कर रहा है, यह प्रतिस्थापन स्थान से पहले यूआरएल को पहचानता है। "var url_mask =" {% url 'someview' pk = 12345%} "। प्रतिस्थापित करें (/ 12345 /," 1 ");" – jax

0

मुझे नहीं लगता कि आप {% url %} जावास्क्रिप्ट से करने के लिए एक नामित तर्क का उपयोग कर सकेंगे है, लेकिन आप एक स्थितीय तर्क या querystring पैरामीटर कर सकता है:

<script type="text/javascript"> 
    var tmp = window.location.hash, //for example 
     url = {% url '[url_name]' %} + tmp + '/'; 
</script> 

लेकिन, आप केवल कि एक बार कर सकता है , जब टेम्पलेट शुरू में प्रस्तुत किया जाता है।

+0

के साथ नहीं, हाँ, मैं इसी तरह के साथ आया हूं छल। Var url_mask = "{% url 'someview' arg1 = 12345%} की तरह कुछ"। (प्रतिस्थापित करें (/ 12345 /, tmp.toString()); –

+0

कूल। आप हमेशा अपने प्रश्न का उत्तर दे सकते हैं, जो भविष्य में इस प्रश्न को देखकर दूसरों के लिए फायदेमंद है। – Brandon

0

एक आसान तरीका यह करने के लिए

<div id="test" style="display: none;"> 
{% url 'some_url:some_sub_url'%} 
</div> 


<script> 
    url_mask = $("#test").html() 
</script> 
1

बस बनाने यह स्पष्ट इसलिए अगले पाठकों एक व्यापक समाधान हो सकता है है।

window.location = "{% url 'your_view_name' 1234 %}".replace(/1234/, tmp.toString()); 
संबंधित मुद्दे