2017-05-17 10 views
0

私は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 'が必要です。このタグを登録したり読み込んだりするのを忘れましたか?

これはサーバーでは動作しませんが、ローカルでは何らかの理由がありますか?それとももっと良い方法がありますか?

答えて

0

辞書の代わりにリストを使って解決できました。私はすべての

{% load render_table from django_tables2 %} 

{% block content %} 

    {% for val in table_A %} 
     <div class="data_tables"> 
      {% render_table table_A.pop %} 
      <br> 
      <br> 
      {% render_table table_B.pop %} 
     </div> 
    {% endfor %} 

{% endblock content %} 
でテンプレートタグを使用する必要はありませんでした

primary_keys = [1, 2, ... n] # these are not simple or ordered integers 
tables_A = [] 
tables_B = [] 

for idx, primary_key in enumerate(primary_keys): 
    tables_A.append(TableA(table_A_queryset.filter(pk=primary_key))) 
    RequestConfig(request).configure(tables_A[idx]) 

    tables_B.append(TableB(table_B_queryset.filter(pk=primary_key))) 
    RequestConfig(request).configure(tables_B[idx]) 

return render(request, 'index.html', {'tables_A ': tables_A , 'tables_B ': tables_B }) 

関連する問題