본문 바로가기
IT

[ajax] Datatable 데이터 Ajax POST Request로 받아오기

by 쪼이빠빠 2023. 3. 16.
728x90
반응형

 Django 프레임워크를 사용해서 Datatable을 사용해야 할 일이 생겼는데

데이터를 Ajax POST Request로 받아오고자 한다면 아래와 같이 작성.

 

데이터는 Json 형태로 받아옴.

HTML

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  <link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">
  <script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
  <script>
    $(document).ready(function() {
      $('#example').DataTable({
        "ajax": {
          "url": "{% url 'ajax_data' %}",
          "type": "POST",
          "data": function ( d ) {
            d.csrfmiddlewaretoken = '{{ csrf_token }}';
            return $.param( d );
          }
        },
        "columns": [
          {
            "data": null,
            "render": function ( data, type, row, meta ) {
              return "<input type='checkbox' value='" + row.id + "' />";
            }
          },
          { "data": "id" },
          { "data": "name" },
          { "data": "age" },
          { "data": "email" }
        ]
      });
    });
  </script>
</head>
<body>
  <table id="example" class="display" style="width:100%">
    <thead>
      <tr>
        <th></th>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
    </tbody>
  </table>
</body>
</html>

 

Django View

from django.shortcuts import render
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator


def ajax_data(request):
    data = [
        {'id': 1, 'name': 'Alice', 'age': 25, 'email': 'alice@example.com'},
        {'id': 2, 'name': 'Bob', 'age': 30, 'email': 'bob@example.com'},
        {'id': 3, 'name': 'Charlie', 'age': 35, 'email': 'charlie@example.com'},
        {'id': 4, 'name': 'David', 'age': 40, 'email': 'david@example.com'},
        {'id': 5, 'name': 'Eve', 'age': 45, 'email': 'eve@example.com'},
    ]
    return JsonResponse({'data': data})

 

 

반응형

댓글