Замените URL-адрес кнопки Django на эквивалент DRF - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть DataTable, который включает следующее определение столбца для добавления кнопки в каждую строку:

"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 на консоль, он дает мне правильный идентификатор для каждой строки, видимой в DataTable.

Как бы я имитировал простую версию кнопки Django, чтобы URL-адрес данных правильно возвращал жесткийзакодированный URL для каждой строки таблицы данных?

...