javascript - 无法让数据表与 django 生成的表一起使用

标签 javascript jquery django datatables

我正在尝试在 Django 应用程序中使用数据表。 这是我的代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> My  web application </title>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css" title="currentStyle">
    @import "./DataTables-1.9.0/media/css/demo_table.css";
</style>

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="./DataTables-1.9.0/media/js/jquery.dataTables.js"></script>
<script>
$(document).ready( function () {
    $('#table_id').dataTable();
    } );
</script>
</head>
<body>
    {% if success %}
        <form action="." method="POST">
        {{ my_form.as_p }}
        <input type="submit" value="Send">
        <input type="reset" value="Reset">
        </form>
        <br>
    <table id="table_id" class="display">
    <thead> <tr>
    {%for x in htl%}
        <th> {{x}} </th>
    {% endfor%}
    </tr>
    </thead>
    <tbody>
    {% for x in mytable %}
        <tr>
        {% for y in x %}
            <td> {{y}} </td>
        {%endfor %}
        </tr>
    {% endfor%}
    </tbody>
    </table>
    {% else %}
        <form action="." method="POST">
        {{ my_form.as_p }}
        <input type="submit" value="Send">
        <input type="reset" value="Reset">
        </form>

    {% endif %}
</body>
</html>

我想传递一个 python 列表,每一行都作为列表中的一个项目,并在 template.html 中格式化表格,如代码所示。我根本无法让数据表工作。有任何想法吗? 谢谢

最佳答案

我认为您的 HTML 可能有问题:

<thead> <tr>
{%for x in htl%}
    <th> {{x}} </th>
{% endfor%}
</th>
</thead>

那一秒</th>应该是 </tr>

此外,您可能还想看看这个:https://github.com/eire1130/Django_datatables

这是我编写的一个包装器,用于简化将数据表嵌入到 Django 模板中的过程。

此外,我注意到您正在使用 {% block %},但我没有看到您在扩展什么?

编辑配置媒体和静态文件:

在 settings.py 的最顶部添加这些行:

import os
ROOT_PATH = os.path.dirname(__file__)

(你应该在你的所有项目中都这样做,这样做会在未来为你省去很多麻烦)

此外,在您的 settings.py 中,您应该向下查看文件的中途并查看四行(实际上是两行,但我们也会同时执行静态)

MEDIA_ROOT = os.path.join(ROOT_PATH, 'media/')
MEDIA_URL = 'http://127.0.0.1:8000/media/'

以上将在 myproject/media 等目录中设置您的媒体文件,您的应用程序位于 myproject/myapp

STATIC_ROOT = os.path.join(ROOT_PATH, 'static/')
STATIC_URL = 'http://127.0.0.1:8000/static/'

上面的代码将在 myproject/static 等目录中设置静态文件,您的应用程序位于 myproject/myapp。

在settings.py所在的同一目录下,创建一个名为“urls.py”的文件,如果你的旧urls.py已经在这里,将它移动到你的app文件夹,所以你的旧urls.py应该位于我的项目/我的应用程序/urls.py.

你的新 urls.py 应该位于 myproject/urls.py

在这个新的完全空白的 python 文件中,添加以下行:

from django.conf.urls.defaults import patterns, include, url
from django.conf import settings


urlpatterns = patterns('',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT }),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT }),
    (r'^', include('myproject.myapp.urls')),

)

请注意最底部的“include”。显然,您需要更改它以反射(reflect)您的项目和应用名称。

现在设置完毕,您需要创建一个位于 myproject/media 的媒体文件夹。你应该在/static 上做同样的事情。

在此目录中,您应该放置您关心的任何媒体文件。例如,我有一个名为“插件”的文件夹,里面有数据表。路径是这样的:myproject/media/plugins/datables,然后里面就是所有的datatables文件。

现在,在您的模板中,将链接指向目录:

'/media/plugins/datatables/media/js/jquery.dataTables.min.js'

注意没有“.”在开头,没有@include。只是网址。

这应该会为您设置数据表并允许同时提供媒体服务。在生产环境中,你不会完全像这样,但对于原型(prototype)设计和学习,这会工作得很好

关于javascript - 无法让数据表与 django 生成的表一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10044374/

相关文章:

python - Django 和 AWS 简单电子邮件服务

python - Docker+Django,服务器运行但欢迎页面不显示

Django,检查是否存在,但检查属性数组中的许多项目

javascript - 如何在没有任何标签的情况下更改其复选框旁边的文本?

javascript - 如何在larvel5.0中使用带有数组输入的save方法

javascript - Crowdflower:如何包含自定义 HTML?

javascript - 使用 jQuery 或 Underscore.js 获取嵌套对象中字段的值

javascript - 不允许将顶部框架导航到数据 URL : JsPDF

javascript - 确定元素是否是最后一个可见元素

c# - MVC3 Controller 未接收任何参数值