私は、これまでにPython、Django、そして一般的なプログラミングの基礎を理解しようとしている独学のアマチュアです。私が持っていた問題を理解しようとしています。 クラス変数とDjangoクラスベースのビューのメソッド
は、だから私は、このクラスにclass ContractsView(InventoryView):
template_name = "contracts.html"
page = "Contracts"
primary_table, secondary_table = build_contracts_tables(**{"commodity": None})
を持っており、それには次の関数を使用しています:それはいくつかのデータをレンダリングしないよう
def build_contracts_tables(**kwargs):
print('fire')
primary_table_query = Purchase.inventory.current_contracts_totals(**kwargs)
primary_table_fields = ("total_meats", "total_value", "meat_cost")
primary_table_html = build_table([primary_table_query,], *primary_table_fields) if primary_table_query else err_str
secondary_table_query = Purchase.inventory.current_contracts(**kwargs)
secondary_table_fields = ("invoice", "supplier", "variety", "meats", "value", "meat_cost", "ship_date")
secondary_table_html = build_table(secondary_table_query, *secondary_table_fields) if secondary_table_query else err_str
return primary_table_html, secondary_table_html
どういうわけか、ビューは、テンプレートに何かを送っています。しかし、データはすぐには更新されません(最終的には更新されません)。つまり、データベースを変更した後に更新しますが、古いデータは保持されます。また、コンソールに私のprint
が表示されることはありません。
しかし、私は関数にクラス変数を変換する際に、それだけで正常に動作します:
class ContractsView(InventoryView):
template_name = "contracts.html"
page = "Contracts"
def primary_table(self):
x,y = build_contracts_tables(**{"commodity": None})
return x
def secondary_table(self):
x, y = build_contracts_tables(**{"commodity": None})
return y
誰かが私は私の元の試みで破っていたルールを理解するのに役立つだろうか?
私は本当にあなたが何を求めているのか分からない。何が問題なのか、その解決策が分かっているからだ。クラス変数を正しく識別するので、クラス変数とインスタンス変数の違いは明らかです。あなたは何が欠けていますか? –
なぜ私はページを読み込むことができるのだろうと思っていましたが、CBVはデータを配信することができますが、もはや真ではない古いデータになる可能性があります。元のクラス変数は、最初のページの読み込み時に定義された後、サーバーが実行されている間は保持されますか? –