Как передать экземпляр объекта в тег в модальном диалоге Django? - PullRequest
0 голосов
/ 21 февраля 2019

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

 {% for file in file_list %}
    <tr>
        <td>{{ file.filename }}</td>
        <td>
            <!-- passing the file.pk argument to JS function -->
            <a data-toggle="modal" href="#fileConfirmDeleteModal" data-id="{% url 'delete_file' file.pk %}">
                <button class="btn btn-danger">Delete</button>
            </a>
        </td>
    </tr> 
 {% endfor %}

В моем вызове функции JavaScript отображается окно подтверждения режима для удаления файла:

  <script type="text/javascript">
     $(document).on("click", ".open-AddBookDialog", function () {
     var file_pk = $(this).data('id'); //the 'file.pk' instance is retrieved

     //how to pass 'file_pk' argument to the <a href> tag in the modal
     $(".modal-footer #delete_file_href").val( file_pk );

     $('#fileConfirmDeleteModal').modal('show');
    });
  </script>

Ниже приведено диалоговое окно режима, которое содержит «Да» и «Нет».кнопка;при нажатии «Да» необходимо вызвать конкретный шаблон URL, например, «delete_file» file.pk

     <!--Modal: fileConfirmDeleteModal-->
       <div class="modal fade" id="fileConfirmDeleteModal" tabindex="-1"   role="dialog" aria-labelledby="exampleModalLabel"
  aria-hidden="true">
           <div class="modal-dialog" role="document">
           <!--Content-->
             <div class="modal-content text-center">
             <!--Header-->
                <p class="heading">Are you sure?</p>
             <!--Body-->
                <div class="modal-footer flex-center">
                 <!--Here I need to append the file.pk value to the 'delete_file url name'-->
                  <a href="{% url 'delete_file' file.pk=file_pk %}" id="delete_file_href">
                    <button>Yes</button>
                  </a>
                   <button class="btn btn-danger" data-dismiss="modal">No</button>
               </div>
             </div>
          <!--/.Content-->
          </div>
      </div>

При попытке использовать приведенный выше код я сталкиваюсь со следующей ошибкой:

 Exception Type: TemplateSyntaxError at /mysite/file_log/
 Exception Value: Could not parse the remainder: '=file_pk' from 'file.pk=file_pk'

Urlpattern:

  path('delete_file/<int:pk>', views.FileDeleteView.as_view(), name='delete_file'),

Я не могу понять, как добавить значение этой переменной file_pk внутрь имени URL {%%} тега href.

1 Ответ

0 голосов
/ 21 февраля 2019

Для ошибки шаблона сначала следует написать имя аргумента (file_pk), а затем значение (file.pk):

{% url 'delete_file' file_pk=file.pk %}

Для проблемы с модалом в первом шаблоне выможет передать URL-адрес для удаления как data-delete-url параметр:

{% for file in file_list %}
    <tr>
        <td>{{ file.filename }}</td>
        <td>
            <!-- passing the file.pk argument to JS function -->
            <a data-toggle="modal" href="#fileConfirmDeleteModal"
               data-id="{{ file.pk }}" data-delete-url="{% url 'delete_file' file_pk=file.pk %}"> 
               <button>Delete</button>
            </a>
        </td>
    </tr> 
 {% endfor %}

Затем обновите модальный URL-адрес следующим значением:

  <script type="text/javascript">
     $(document).on("click", ".open-AddBookDialog", function () {
     var delete_url = $(this).data('delete-url'); 
     $(".modal-footer #delete_file_href").prop( delete_url );

     $('#fileConfirmDeleteModal').modal('show');
    });
  </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...