我在index view
下面的代碼在views.py
:組織代碼視圖
def index(request):
# Count all active polls for posting on the index page.
all_active_polls = Poll.objects.filter(pub_date__lte=timezone.now(),
is_active=True
).order_by('-pub_date')
num_of_active_polls = len(all_active_polls)
# Count all inactive polls for posting on the index page.
all_inactive_polls = Poll.objects.filter(pub_date__lte=timezone.now(),
is_active=False
).order_by('-pub_date')
num_of_inactive_polls = len(all_inactive_polls)
# Make the list of the last 5 published polls.
latest_poll_list = Poll.objects.annotate(num_choices=Count('choice')) \
.filter(pub_date__lte=timezone.now(),
is_active=True,
num_choices__gte=2) \
.order_by('-pub_date')[:5]
return render(request, 'polls/index.html', {
'latest_poll_list': latest_poll_list,
'num_of_active_polls': num_of_active_polls,
'num_of_inactive_polls': num_of_inactive_polls
})
在索引頁我想有一個列表我的最後5個(或更多,並不重要)民意調查。 然後我想要兩個鏈接:View all active polls(number of polls)
和View all closed polls(number of polls)
。所以我需要在index
視圖代碼中對它進行計數。 但是,我不確定這是放置此代碼的最佳位置(即計數活動和非活動民意測驗的數量)。
也可能我會在其他一些視圖中需要這個數字,所以我會將這段代碼複製到這個視圖中?我認爲它很痛DRY和Django重點堅持DRY原則。
那麼,我該如何重組這個代碼,使其更合乎邏輯,而不是傷害了原理?