Динамическое добавление срок таблицы по клику

Реализовал js метод, который должен вставлять кусок html кода в tbody для добавления новых строк. Скрипты подключил, однако "магии" не происходит. Прошу помочь разобраться, где я накосячил...

Подключаю свой js (строка в самом конце шаблона html, если это важно)

<script src="{% static 'custom/js/custom_js.js' %}"></script>

Кусок html целевой страницы

<table class="table table-borderless" id="ItemInRecipTable">
            <thead class="table-info">
                <tr>
                    <th>Ингридиенты</th>
                    <th>Количество (гр.)</th>
                </tr>
            </thead>

            <tbody>
                <tr>
                    <td>
                        <select name="item-choice" class="form-control">
                            {% for item in items %}
                                <option value={{ item.id }}>{{ item.name }}</option>
                            {% endfor %}
                        </select>
                    </td>
                    <td>
                        <input type="number" name="amount-item-1" class="form-control">
                    </td>
                </tr>
            </tbody>

        </table>

        <br>
        <input type="button" class="btn btn-warning" id="addrow" onclick="AddRow()" value="Добавить ингридиент" />

Вот код js

var i = 1;
function AddRow() {
  i++;
  $('#ItemInRecipTable').find('tbody').append('<tr><td><select name="item-choice" class="form-control">{% for item in items %}<option value={{ item.id }}>{{ item.name }}</option>{% endfor %}</select></td><td><input type="number" name="amount-item-'+ i +'" class="form-control"></td></tr>');
}

Ответы (1 шт):

Автор решения: Tim-Tam

Приведённый код в вопросе работает корректно, если подключить jQuery. Однако, это не позволяет обрабатывать корректно логику шаблонизатора.

Для этого необходимо:

  1. релизовать логику REST API в Джанго (например, Django REST Framework (DRF))
  2. Делать вызов этого REST API на стороне js, получать необходимые данные
  3. Формировать строку html разметки и выводить.

По факту мы не используем шаблонизатор, но получаем нужный эффект.

→ Ссылка