代码之家  ›  专栏  ›  技术社区  ›  Scott Skiles

将Django模板中上下文中的JSON对象呈现为Ajax数据表

  •  0
  • Scott Skiles  · 技术社区  · 7 年前

    视图.py

    from utils load get_data_frame
    
    class MyView(TemplateView):
        template_name = "my_template.html"
        df = get_data_frame()
        column_data = [{"field": val, "title": val} for val in df.columns.values]
        json_object = df.to_json(orient='records')
        context['json_data'] = json_object
        context['columns'] = column_data
    

    我的_模板.html

    <script>
        var my_data = {{ json_data|safe }};
        var column_data = {{ columns|safe }};
        $( function() {
            $( "#my-cool-table" ).dataTable(
            {
                "columnDefs": [{
                "defaultContent": "-",
                "targets": "_all"
                }],
                "data": my_data,
                "columns": column_data,
            });
        });
    </script>
    
    {% if json_data %}
        <table id="my-cool-table">
        <thead>
        </thead>
        <tbody>
        </tbody>
        </table>
    {% else %}
    

    但是,当我呈现这个模板时,列会毫无问题地显示出来,但是表的数据只呈现中指定的默认值“-” defaultContent dataTables ? 或者是 <script> 标签放错地方了?

    当我打印变量时 my_data

    Array(17) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]

    1 回复  |  直到 7 年前
        1
  •  1
  •   davidkonrad    7 年前

    看起来不错。我相信你只需要更换 field data :

    column_data = [{"data": val, "title": val} for val in df.columns.values]
                     ^^^^
    

    columns.data 指定对象属性/源。

    推荐文章