Как изменить Django переменную шаблона с помощью JS и вернуть в нее изменения - PullRequest
1 голос
/ 27 апреля 2020

Я хотел бы передать список идентификаторов представлению, когда я нажимаю на ссылку:

<a href="{% url 'app:manage_ids' %}?ids={{ids}}">

Итак, я создал шаблон var и передал его js:

{% with ids="" %}
  <script type="text/javascript">
    window.ids = "{{ ids }}";
  </script>
{% endwith %}

Я управляю идентификаторами объектов, когда устанавливаю флажок:

<input type="checkbox" class="checkbox" value="{{ object.id }}">

Добавление или удаление его в список:

$('.checkbox').change(function() {
  var id = $(this).val();

  // if django template var is empty
  var list_ids = [];
  // else
  var list_ids = window.ids;

  if ($(this).is(':checked')) {
    list_ids.push(id);
      // here i have to save it on a django template var to use it on the click link
  }
  else {
    const index = list_ids.indexOf(id);
    if (index > -1) {
      list_ids.splice(index, 1);
      // here i have to save it on a django template var to use it on the click link 
    }
  }
});

Кто-нибудь может мне помочь, как это сделать? Большое вам спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

Вы не можете обновить переменную django и ожидать, что она обновит ваше href значение ссылки.

Более того, вам не следует отправлять значение параметра запроса GET в качестве структуры списка данных, вместо этого вы отправите его как ?ids=<value1>&ids=<value2>

. Для этого вам нужно сначала создать такую ​​строку URL-адреса, а затем динамически обновить с ее помощью href вашей гиперссылки.

Сначала вы можете отредактируйте строковую переменную для вас href в javascript somehwere as:

var id_link = "{% url 'app:manage_ids' %}?ids=";

Затем, когда вызывается функция clickbox, вы можете добавить к ней новое значение и обновить href ссылки:

id_link += "&ids=" + id;

Добавьте идентификатор к своему href, получите и обновите его

var a = document.getElementById('yourlinkId');
a.href = id_link

Теперь, когда кто-то нажимает на эту ссылку, вы можете получить его в параметрах запроса в виде:

request.GET.getlist('ids')

, и вы получите список всех идентификаторов.


Примечание (Мои два цента): в идеале в хорошей архитектуре это должно происходить путем нажатия кнопки с запросом на публикацию от шаблон в django.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...