Python 如何在django datatable视图中呈现表?

Python 如何在django datatable视图中呈现表?,python,django,datatable,html-table,Python,Django,Datatable,Html Table,我不知道如何使用Django datatable view呈现可编辑表。我想创建一个完全像这样的表:例如,从modelCity 我已经阅读了文档和教程,但仍然不知道如何创建表 这就是我到目前为止所做的: {% extends "base.html" %} {% block head %} {% load static %}e <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTab

我不知道如何使用
Django datatable view
呈现可编辑表。我想创建一个完全像这样的表:例如,从model
City

我已经阅读了文档和教程,但仍然不知道如何创建表

这就是我到目前为止所做的:

{% extends "base.html" %}
{% block head %}
    {% load static %}e
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css">
    <script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
    <script src="{% static "datatable/js/datatableview.min.js" %}"></script>
    <script>
        datatableview.auto_initialize = false;
        $(function () {
            var xeditable_options = {};
            datatableview.initialize($('.datatable'), {
                fnRowCallback: datatableview.make_xeditable(xeditable_options),
            });
        })
    </script>
{% endblock %}
{% block content %}
    {{ datatable }}
    {{ object_list }}
{% endblock %}
不幸的是,我的代码呈现以下内容:

{%block content%}
{%if实例%}
身份证件
名称
国
{实例%%中的行的百分比}
{{row.id}}
{{row.name}
{{row.country}
{%endfor%}
{%else%}
没有可用的数据

{%endif%} {%endblock%}
{%block content%}
{%if实例%}
身份证件
名称
国
{实例%%中的行的百分比}
{{row.id}}
{{row.name}
{{row.country}
{%endfor%}
{%else%}
没有可用的数据

{%endif%} {%endblock%}
作为第一步,试着运行下面的示例项目:

django-datatable-view/datatableview/tests/example_project/example_project/example_app
要执行此操作,请按照github页面上的项目进行操作,但在开始之前,请确保将
django>=1.4
替换为
django==1.8
。也就是说,根据我的经验,它与django1.9或1.10不兼容

一旦你完成了这项工作,你将有一整套工作的例子和匹配的文档,这将使事情变得容易一点。您提供的链接已过期。浏览示例(
example\u app/views.py
)和文档

当您准备离开沙箱时,请遵循以下路线:

  • 开始一个新的虚拟世界

  • 克隆此分支:
    https://github.com/jangeador/django-datatable-view/
    (它还有一些提交,使其与django的最新版本兼容)和pip安装(如果您计划进行更改,请使用-e可编辑选项)

  • 遵循您运行的示例应用程序中的以下示例。代码:

    class MyDatatable(Datatable):
        class Meta:
            model = Entry
            columns = ['id', 'headline', 'pub_date', 'n_comments', 'n_pingbacks']
            ordering = ['-id']
            page_length = 5
            search_fields = ['blog__name']
            unsortable_columns = ['n_comments']
            hidden_columns = ['n_pingbacks']
            structure_template = 'datatableview/default_structure.html'
    
    class ConfigureDatatableObjectDatatableView(DatatableView):
        model = Entry
        datatable_class = MyDatatable
    
  • 如果不需要,可以删除
    Datatable
    类中的所有属性(它们是可选的)

    除了文档之外,我还必须重写
    DataTableView
    类上的以下方法以使其工作

    def get_template_names(self):
        return "example_base.html"
    
    这是您的模板文件,需要包含:

    <script src="{% static 'path-to/datatables.min.js' %}" type="text/javascript"></script>
    <link href="{% static 'your-path-to/datatables.min.css' %}" rel="stylesheet">
    
    <script type="text/javascript" src="{% static 'js/datatableview.js' %}"></script>
    
    {{ datatable }}
    
    <script>
        // Page javascript
        datatableview.auto_initialize = true;
    </script>
    
    
    {{datatable}}
    //页面javascript
    datatableview.auto_initialize=true;
    

    这里值得注意的是,django datatable视图模块中包含了
    datatableview.js
    (以及附带的
    datatableview.auto\u initialize=true;
    )。如果您一开始对datatables.js感到满意,您可以自己进行配置,但考虑到您对django datatable视图也是新手,这可能是最简单的方法

    作为第一步,尝试运行以下示例项目:

    django-datatable-view/datatableview/tests/example_project/example_project/example_app
    
    要执行此操作,请按照github页面上的项目进行操作,但在开始之前,请确保将
    django>=1.4
    替换为
    django==1.8
    。也就是说,根据我的经验,它与django1.9或1.10不兼容

    一旦你完成了这项工作,你将有一整套工作的例子和匹配的文档,这将使事情变得容易一点。您提供的链接已过期。浏览示例(
    example\u app/views.py
    )和文档

    当您准备离开沙箱时,请遵循以下路线:

  • 开始一个新的虚拟世界

  • 克隆此分支:
    https://github.com/jangeador/django-datatable-view/
    (它还有一些提交,使其与django的最新版本兼容)和pip安装(如果您计划进行更改,请使用-e可编辑选项)

  • 遵循您运行的示例应用程序中的以下示例。代码:

    class MyDatatable(Datatable):
        class Meta:
            model = Entry
            columns = ['id', 'headline', 'pub_date', 'n_comments', 'n_pingbacks']
            ordering = ['-id']
            page_length = 5
            search_fields = ['blog__name']
            unsortable_columns = ['n_comments']
            hidden_columns = ['n_pingbacks']
            structure_template = 'datatableview/default_structure.html'
    
    class ConfigureDatatableObjectDatatableView(DatatableView):
        model = Entry
        datatable_class = MyDatatable
    
  • 如果不需要,可以删除
    Datatable
    类中的所有属性(它们是可选的)

    除了文档之外,我还必须重写
    DataTableView
    类上的以下方法以使其工作

    def get_template_names(self):
        return "example_base.html"
    
    这是您的模板文件,需要包含:

    <script src="{% static 'path-to/datatables.min.js' %}" type="text/javascript"></script>
    <link href="{% static 'your-path-to/datatables.min.css' %}" rel="stylesheet">
    
    <script type="text/javascript" src="{% static 'js/datatableview.js' %}"></script>
    
    {{ datatable }}
    
    <script>
        // Page javascript
        datatableview.auto_initialize = true;
    </script>
    
    
    {{datatable}}
    //页面javascript
    datatableview.auto_initialize=true;
    

    这里值得注意的是,django datatable视图模块中包含了
    datatableview.js
    (以及附带的
    datatableview.auto\u initialize=true;
    )。如果您一开始对datatables.js感到满意,您可以自己进行配置,但考虑到您对django datatable视图也是新手,这可能是最简单的方法

    如果您认为需要此函数根据需要呈现自定义列

        def render_column(self, row, column):
                # We want to render user as a custom column
                if column == 'user':
                  # escape HTML for security reasons
                  return escape('{0} {1}'.format(row.customer_firstname, 
                  row.customer_lastname))
               else:
                 return super(OrderListJson, self).render_column(row, column)
    

    如果您认为您将需要此函数来根据需要呈现自定义列

        def render_column(self, row, column):
                # We want to render user as a custom column
                if column == 'user':
                  # escape HTML for security reasons
                  return escape('{0} {1}'.format(row.customer_firstname, 
                  row.customer_lastname))
               else:
                 return super(OrderListJson, self).render_column(row, column)
    

    您还没有定义表标记。@UsmanMaqbool如果您知道如何定义标记,您可以发布一个答案。我不知道你说的标签是什么意思。@UsmanMaqbool你能解释一下你说的标签是什么意思吗?你的意思是html表格标签吗?你还没有定义表格标签。@UsmanMaqbool如果你知道如何定义标签,你可以发布一个答案。我不知道你说的标签是什么意思。@UsmanMaqbool你能解释一下你说的标签是什么意思吗?您是指html表格标签吗?请在
    django datatable视图中呈现表格
    感谢您提供此代码片段,它可能会提供一些有限的即时帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。询问而不是在
    django datatable视图中呈现表