Подтвердить что ты не робот

Получить значение переменной javascript в теге шаблона URL-адреса Django

Известно, что существует суровый способ обращения к URL-адресу с помощью тега-шаблона django "url", скажем

{% url "someview" arg1=X %}

Здесь я хочу, чтобы "X" было значением переменной javascript, например tmp. Но следующее не работает.

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

Как мне получить значение внутри тега шаблона?

4b9b3361

Ответ 1

Я нашел трюк, который может работать в большинстве случаев:

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

Он чист, и он не нарушает принцип DRY.

Ответ 2

Просто дайте понять, что у следующих читателей может быть комплексное решение. Что касается вопроса, так я использовал решение Майка Ли для примера, который перенаправляется с Javascript на новую страницу с параметром в переменной с именем tmp:

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

Ответ 3

Я не думаю, что вы сможете использовать именованный аргумент в {% url %} из JavaScript, однако вы можете сделать параметр позиционного аргумента или querystring:

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

Но вы могли бы сделать это только один раз, когда шаблон сначала будет отображаться.

Ответ 4

один простой способ сделать это -

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


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

Ответ 5

var name = "{% url 'your_view_name' pk=0 %}".replace('0', name_variable);