我正在改进标准民意调查应用程序。
我有一些代码需要在许多视图中重复:计算各种民意调查(活动、非活动、流行)的数量以在链接中发布数字的代码,例如:
1) 查看所有活动投票(投票数)。
2) 查看所有已结束的投票(投票数)。等等
所以事实上我需要多次重复这段代码,我决定做一个装饰器:
def count_number_of_various_polls(func):
def count():
# Count the number of active polls.
all_active_polls = Poll.active.all()
num_of_active_polls = len(all_active_polls)
# Count the number of inactive polls.
all_inactive_polls = Poll.inactive.all()
num_of_inactive_polls = len(all_inactive_polls)
# Count the number of popular polls per the last month.
popular_polls = Poll.popular.filter(pub_date__gte=timezone.now()
- datetime.timedelta(days=days_in_curr_month))
num_of_popular_polls = len(popular_polls)
func()
return count
然后我想装饰我的index
视图:
@count_number_of_various_polls
def index(request):
latest_poll_list = Poll.active.all()[:5]
return render(request, 'polls/index.html', {
'latest_poll_list': latest_poll_list,
'num_of_popular_polls': num_of_popular_polls,
'num_of_active_polls': num_of_active_polls,
'num_of_inactive_polls': num_of_inactive_polls
})
当我尝试在我的开发服务器上打开投票索引页面时,我收到以下错误:
TypeError at /polls/
count() takes no arguments (1 given)
我不知道 1 参数是什么。哪里有问题?