現実的なチェックを実行して、使用するテンプレートファイルを決定する方法が不思議です。 AgencyFullViewからagency_countにアクセスするにはどうすればよいですか?私は現在、型オブジェクトリターンを持って何AgencyFullMixinは、 "あなたが別の方法でagency_count
にアクセスしたい場合、あなたは属性として設定する必要があります何の属性「agency_count」継承されたクラスベースのビューで変数にアクセスする方法
class AgencyFullMixin(ContextMixin):
def get_context_data(self, pk, **kwargs):
context_data = super(AgencyFullMixin, self).get_context_data(**kwargs)
agency = Agencies.objects.filter(pk=pk)
context_data["agency"] = agency
agency_count = agency.count()
context_data["agency_count"] = agency_count
return context_data
class AgencyFullView(TemplateView, AgencyFullMixin):
if agency_count != 0: **<<<--- What to put here?**
template_name = 'community_information_database/agency_full.html'
else:
template_name = 'community_information_database/not_valid.html'
def get_context_data(self, **kwargs):
context_data = super(AgencyFullView, self).get_context_data(**kwargs)
return context_data
コードAgencyFullViewにクラスのボディに右に書かれているように見えます。それは事実ですか?また、mixinクラスにも 'agency_count'変数がないようです。あなたは' agency_count_test'を持っています。 'agency_count_test'はローカル変数であり、get_context_data()メソッドが返ったらそれはなくなります。 –
要求に応じてのみ計算されるものに基づいて、クラスレベルでテンプレートを設定しようとしています。これはうまくいきません。あなたの 'if agency_count!= 0'コードはアプリケーションの起動時に一度だけ実行され、すべての要求に対して実行されることはないので、このカウントを使用することはできません。 –
@Mad Wombat _test typoを削除しました – Fish