#python #ajax #django #datatables #django-rest-framework
#Python #ajax #Django #Таблицы данных #django-rest-framework
Вопрос:
У меня есть таблица данных, которая включает следующее определение столбца для добавления кнопки в каждую строку:
"columnDefs": [ {
"targets": 11,
"data": null,
"defaultContent": "<button class='btn btn-warning btn-sm js-update-activity' data-url='https://server/platform/activities/104/update/'></button>"
} ],
Это работает, за исключением того, что число 104 является жестко закодированным идентификатором. Обычная версия Django выглядит следующим образом:
{% for activity in activities %}
<tr>
<td>{{ activity.id }}</td>
<td>
<button class="btn btn-warning btn-sm js-update-activity"
data-url="{% url 'activity_update' activity.id %}">
</button>
</td>
</tr>
{% endfor %}
activity_update
является ли URL-адрес именем для этого URL-адреса:
url(r'^platform/activities/(?P<pk>d )/update/$', views.activity_update, name='activity_update')
Если я использую обычную версию Django в версии DRF, я получаю эту ошибку:
Reverse for 'activity_update' with no arguments not found. 1 pattern(s) tried: ['platform/activities/(?P<pk>\d )/update/$']
Очевидно activity.id
, что он не определен в представлении DRF, поскольку данные поступают через конечную точку JSON. Поэтому мне нужно выяснить, как присвоить атрибуту идентификатор из строки DataTable data-url
.
Я пытался это сделать…
"columnDefs": [ {
"targets": 11,
"data": null,
"render": function ( data, type, row ) {
return "<button type='button' aria-label='update' class='btn btn-warning btn-sm js-update-activity' data-url='https://server/platform/activities/'" row.id "'/update/'></button>";
},
… но это приводит к тому, что запрос просто переходит к https://server/platform/activities/
и игнорирует остальные data-url
. Когда я печатаю row.id
на консоли, он выдает мне правильный идентификатор для каждой строки, видимой в таблице данных.
Как бы мне имитировать обычную версию кнопки Django, чтобы URL-адрес данных правильно возвращал жестко закодированный URL-адрес для каждой строки DataTable?