NoReverseMatch: с аргументами '(' ',)' не найдено - PullRequest
0 голосов
/ 10 февраля 2020

Реверс для 'vehicle_details' с аргументами '(' ',)' не найден. Пробовали 1 шаблонов: ['Masterlist / VehicleMasterlist / Details / (? P [0-9] +) $']

<table id="vtable" class="table table-striped table-bordered" style="width:100%" data-server-side="true" data-ajax="/api/masterlist/?format=datatables">
  <thead>
    <tr>
      <th>Activity No</th>
      <th>NO</th>
      <th>Plate Number</th>
      <th>Conductions Sticker No.:</th>
    </tr>
  </thead>
</table>

Views.py

path('VehicleMasterlist/Details/<int:pk>', vehicleMasterDetails.as_view(), name='vehicle_details'),

Я пытаюсь удержать значение PK для редактирования / просмотра существующих данных, используя js и HMTL5. А также с помощью Django API Rest Framework для моей таблицы. Как получить / удержать значение PK после того, как оно щелкнет строку в таблице? Спасибо

Это мой JS код:

{% block extra_js %}
<script>
$(document).ready(function() {
    var table = $('#vtable').DataTable({
        "serverSide": true,
        "scrollX": true,
        "ajax": "/api/masterlist/?format=datatables",
        "columns": [
        { 
            "targets": 0,
            "data": "Activity_Id",
            "render": function(data, type, row, meta){
            var id = data.row( this ).attr("id");
                if(type === 'display'){
                    data = '<a href="{% url 'vehicle_details' id %}">' + data + '</a>';
                }
                return data;
            }
        },
            {"data":"NO"},
            {"data":"PLATE_NO"},
            {"data":"CS_NO"},
        ]
    });
    $('#vtable').on( 'click', 'tr', function () {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            table.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    } );
});
</script>

{% endblock %}

1 Ответ

0 голосов
/ 10 февраля 2020

Нельзя использовать JS переменные в Django шаблонных тегах. Один из способов сделать это - написать жестко закодированные URL.

{% block extra_js %}
<script>
$(document).ready(function() {
    var table = $('#vtable').DataTable({
        "serverSide": true,
        "scrollX": true,
        "ajax": "/api/masterlist/?format=datatables",
        "columns": [
        { 
            "targets": 0,
            "data": "Activity_Id",
            "render": function(data, type, row, meta){
            var id = data.row( this ).attr("id");
                if(type === 'display'){
                    data = '<a href="/VehicleMasterlist/Details/' + id + '">' + data + '</a>';
                }
                return data;
            }
        },
            {"data":"NO"},
            {"data":"PLATE_NO"},
            {"data":"CS_NO"},
        ]
    });
    $('#vtable').on( 'click', 'tr', function () {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            table.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    } );
});
</script>

{% endblock %}
...