【问题标题】:Cant Print DataTable and its Values in Django Template无法在 Django 模板中打印 DataTable 及其值
【发布时间】:2015-05-24 12:26:05
【问题描述】:

我正在尝试在 Django 模板中打印数据表。我正在使用 Django 1.7 并使用 Metro 风格的 CSS。如果我尝试从 view 返回输出为 JSON,它只会打印 JSON 输出而没有任何 HTML 格式。如果我从视图返回非 JSON 输出,它会打印带有标题但没有值的 HTML 和 Datatable,并且 IE 中的 f12 调试器工具会给出 JSON 错误。我的目标是打印一个没有任何自定义的基本数据表,我正在使用 ServerSide ajax 处理从数据库(模型)中提取数据,我也尝试在 Javascript 中使用 sAjaxsource。这是我的模板:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<link href="/static/fnsbuild/metro/docs/css/metro-bootstrap.css" rel="stylesheet" />
<link href="/static/fnsbuild/metro/docs/css/metro-bootstrap-responsive.css" rel="stylesheet" />
<link href="/static/fnsbuild/metro/docs/css/iconFont.css" rel="stylesheet" />
<link href="/static/fnsbuild/metro/docs/css/docs.css" rel="stylesheet" />
<link href="CSS/Override.css" rel="stylesheet" />

<script type="text/javascript" src="/static/fnsbuild/metro/docs/js/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/static/fnsbuild/metro/docs/js/jquery/jquery.dataTables.js"></script>
<script type="text/javascript" src="/static/fnsbuild/metro/docs/js/jquery/jquery.widget.min.js"></script>   
<script type="text/javascript" src="/static/fnsbuild/metro/docs/js/jquery/jquery.dataTables.min.js"></script> 

<script src="/static/fnsbuild/metro/docs/js/metro.min.js"></script>
<script src="/static/fnsbuild/metro/docs/js/load-metro.js"></script>
<script src="/static/fnsbuild/metro/docs/js/docs.js"></script> 


<title>Metro UI CSS : Simple responsive css framework</title>
</head>

<body class="metro">
<div class="container">          
    <table class="table striped hovered dataTable" id="example">
        <thead>
            <tr>
                <th class="text-left">Engineer</th>
                <th class="text-left">Site_Code</th>
                <th class="text-left">NSSA</th>
                <th class="text-left">Region</th>
                <th class="text-left">GFSD</th>

            </tr>
        </thead>

        <tbody>

        </tbody>


    </table>

    <script type="text/javascript" language="javascript" class="init">
    $(document).ready(function()  {
        var oTable=$('#example').DataTable( {
            "aaSorting": [[ 2, "asc" ]],
            "bprocessing": true        
            "bServerSide": true,
            "ajax": "{% url 'api' %}",
        }
        );
    });


    </script>
</div>

这是我的观点:

from django_datatables_view.base_datatable_view import BaseDatatableView

class MyAjaxView(BaseDatatableView):

     template_name = 'fnsbuild/table_test.html'
     model = OspfNssa
     columns = ['id', 'site_code', 'nssa', 'region', 'gfsd']

def render_column(self, row, column):
   return super(MyAjaxView, self).render_column(row, column)

网址.py url(r'^fnsbuild/table_test/$', fnsbuild.views.MyAjaxView.as_view(), name="api"),

它不打印数据表和值,而是打印 JSON 输出

{"recordsTotal": 79, "recordsFiltered": 79, "draw": 0, "data": [[56, "by2", "0.0.3.187", "West NA", 1111], [57, "sn3", "0.0.1.24", "Central NA", 1111], [58, "cpq01", "0.0.12.39", "South America", 1111], [59, "hk2", "0.0.4.178", "Asia", 1111], [60, "co1", "0.0.3.32", "West NA", 1111], [61, "bl4", "0.0.1.169", "East NA", 1111], [62, "co2", "0.0.3.37", "West NA", 1111], [63, "kaw", "0.0.4.76", "Asia", 1111], [64, "ch1", "0.0.0.201", "Central NA", 1111], [65, "bn3", "0.0.0.203", "East NA", 1111]], "result": "ok"}

我几乎尝试了各种论坛上建议的所有内容,几乎放弃了。我是 Django 的新手,所以我可能会错过一些愚蠢的东西。请建议。

【问题讨论】:

  • 代码格式需要改进一下。

标签: django datatables


【解决方案1】:

来自django-datatables-viewBaseDatatableView documentation

django-datatables-view 简化了排序、过滤和创建 JSON 输出的处理

因此,您的视图会生成 JSON,如果这将在 AJAX 请求中使用,这是预期的。

如果您需要不同的东西,您应该让MyAjaxView 不从BaseDatatableView 继承,或者构建另一个视图来处理 ajax 请求。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 2017-08-19
    • 1970-01-01
    • 2019-04-21
    • 2014-11-01
    • 2021-12-05
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多