私はdjango_tables2パッケージを使用して自分のページにテーブルを表示しています。私は動的に表示したい2組のデータを持っています。私が持っている私のviews.pyでDjangoテーブル2を使用した動的テーブル
<Table_1_A>
<Table_1_B>
<Table_2_A>
<Table_2_B>
<Table_n_A>
<Table_n_B>
:
primary_keys = {1, 2, ... n} # these are not simple or ordered integers
tables_A = {}
tables_B = {}
for primary_key in primary_keys:
tables_A['primary_key'] = TableA(table_A_queryset.filter(pk=primary_key))
RequestConfig(request).configure(tables_A[primary_key])
tables_B['primary_key'] = TableB(table_B_queryset.filter(pk=primary_key))
RequestConfig(request).configure(tables_B[primary_key])
return render(request, 'index.html', {'primary_keys': primary_keys, 'tables_A ': tables_A , 'tables_B ': tables_B })
テーブルAとテーブルBは私がtags.pyを持っている私のtemplatetabsフォルダで、私のtables.pyに
を定義されています。
@register.assignment_tag
def get_table(table, primary_key):
return table.get(primary_key)
最後に私のindex.htmlに:
{% load render_table from django_tables2 %}
{% load tags %}
{% block content %}
{% for primary_key in primary_keys %}
<div class="data_tables">
{% get_table tables_A primary_key as table_A %}
{% render_table table_A %}
<br>
<br>
{% get_table tables_B primary_key as table_B%}
{% render_table table_B%}
</div>
{% endfor %}
{% endblock content %}
pycharmでdjango 1.11を実行していますが、pycharmで実行しているときにうまくいきます。私がdebianサーバでこれを実行すると、エラーが出ます。 primary_key、tables_A、およびtables_Bに何かが渡された場合は、500 Internal Server Errorが発生します。それらの辞書が空の場合は、次のようになります。 '19行目のブロックタグが無効です:' get_table '、' empty 'または' endfor 'が必要です。このタグを登録したり読み込んだりするのを忘れましたか?
これはサーバーでは動作しませんが、ローカルでは何らかの理由がありますか?それとももっと良い方法がありますか?