1. 程式人生 > >django datatables外掛 分頁 表格

django datatables外掛 分頁 表格

有了datatables外掛不需要自己寫分頁功能,而且datatables功能強大。

官方文件地址:https://datatables.net/examples/ajax/objects.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
</head>

<body>
    <table id="example" class="display" style="width:100%">
        <thead>
            <tr>
                <th>username</th>
                <th>age</th>
                <th>gender</th>
                <th>nickname</th>
            </tr>
        </thead>
    </table>
</body>
<script>
    $(document).ready(function() {
    $('#example').DataTable( {
        "ajax": "/datatables",
        "columns": [
            { "data": "username" },
            { "data": "age" },
            { "data": "gender" },
            { "data": "nickname" }
        ],
        "language": {
            "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Chinese.json"#語言,現在用的是中文,其他的語言在http://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/可以找到
        }
    } );
} );
</script>
</html>
"ajax": "/datatables"是設定獲取資料的地址,自己寫在路由裡
def info(req):
    return render(req, "datatables.html")


def datatables(req):
    users_list = []
    res = User.objects.all()
    for item in res:
        user_info = {
            "username":item.username,
            "age":item.age,
            "gender":item.gender,
            "nickname":item.nickname
        }
        users_list.append(user_info)
    user_dic = {}
    print(users_list)
    user_dic["data"] = users_list#按照官方文件的格式寫
    return HttpResponse(json.dumps(user_dic))

效果如圖

資料匯出按鈕

可以匯出的資料格式為pdf,csv,列印,excel

參考文件:https://datatables.net/extensions/buttons/examples/initialisation/export