Domanda Ottieni il valore della variabile javascript nel tag modello di url di Django


È noto che esiste un modo ASCIUTO di dirigere verso un URL usando il tag modello django "url", per esempio

{% url "someview" arg1=X %}

Qui, voglio che "X" sia il valore di una variabile javascript, per esempio tmp. Ma quanto segue non funziona

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

Come dovrei ottenere il valore all'interno di un tag modello?


15
2017-07-24 11:07


origine


risposte:


Ho trovato un trucco che potrebbe funzionare nella maggior parte delle circostanze:

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

È pulito e non infrange il principio ASCIUTTO.


37
2017-07-24 11:27



Basta chiarire in modo che i prossimi lettori possano avere una soluzione completa. Per quanto riguarda la domanda, questo è il modo in cui ho usato la soluzione Mike Lee per un caso di esempio che sta reindirizzando con Javascript a una nuova pagina con un parametro in una variabile chiamata tmp:

window.location = "{% url 'your_view_name' 1234 %}".replace(/1234/, tmp.toString());

1
2017-10-22 17:24



Non penso che sarai in grado di utilizzare un argomento con nome {% url %} da JavaScript, tuttavia è possibile eseguire un argomento posizionale o un parametro querystring:

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

Ma puoi farlo solo una volta, quando il modello viene inizialmente renderizzato.


0
2017-07-24 11:12



è un modo semplice per farlo

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


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

0
2018-06-02 13:22