1

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でテーブルをフォーマットしたいと思います。データテーブルをまったく機能させることができませんでした。何か案は?ありがとう

4

1 に答える 1

4

あなたの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で、ファイルのほぼ中間に移動し、4行(実際には2行ですが、同時に静的にも実行します)を確認する必要があります。

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

上記は、アプリがmyproject/myappにあるmyproject/mediaのようなディレクターにメディアファイルを設定します

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

上記は、アプリがmyproject/myappにあるmyproject/staticのようなディレクトリに静的ファイルを設定します。

settings.pyが配置されているのと同じディレクトリに、古いurls.pyがすでに存在する場合は、「urls.py」というファイルを作成し、それをアプリフォルダーに移動します。これにより、古いurls.pyはmyproject/myappに配置されます。 /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')),

)。

一番下の「インクルード」に注意してください。もちろん、プロジェクトとアプリの名前を反映するようにこれを変更する必要があります。

これがセットアップされたので、myproject/mediaにあるメディアフォルダーを作成する必要があります。/ staticについても、同じことを行う必要があります。

このディレクトリには、気になるメディアファイルを配置する必要があります。たとえば、データテーブルがある「プラグイン」というフォルダがあります。パスは次のようになります:myproject / media / plugins / datables、そしてすべてのdatatablesファイルがあります。

次に、テンプレートで、ディレクトリへのリンクを指定します。

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

「。」がないことに注意してください。最初に、@includeはありません。ただのURL。

これにより、データテーブルが設定され、同時にメディアを提供できるようになります。実稼働環境では、このように正確に行うことはできませんが、プロトタイピングと学習の場合、これは問題なく機能します。

于 2012-04-06T14:27:17.973 に答える