在基于类的视图中调用两个函数 - Django

时间:2017-03-08 19:55:15

标签: python django

我有一个类连接到模板,在其中我有两个函数,一个是验证用户(使用我的数据库中可用的凭据),第二个是实际获取一些数据并将其推送到我的模板。但是使用print('whatever')我发现在调用类时没有函数被调用。为什么呢?

views.py

class GenerateReport(TemplateView): # This view is responsable to access users data and return it
    template_name = 'ga_app/report.html'
    def generate_report(request): # authenticate user
        c = CredentialsModel.objects.get(user_id = request.user.id)
        credentials = c.credentials
        http = httplib2.Http()
        http = credentials.authorize(http)
        service = build('analyticsreporting', 'v4', http=http)
        print('This first function is not called')

    def print_data(request): # Get some data
        profile_id = GoogleProperty.objects.get(user_id = request.user.id)
        some_data = service.data().ga().get(
          ids='ga:' + profile_id,
          start_date='7daysAgo',
          end_date='today',
          metrics='ga:sessions').execute()
        print('This second function neither')
        return render(request, self.report, {'some_data': some_data}, {'profile_id': profile_id})

urls.py

url(r'^re/$', GenerateReport.as_view(), name='re'),

shell显然没有显示任何打印出来的内容,并且模板无法呈现metrics和/或profile_id

1 个答案:

答案 0 :(得分:2)

默认情况下不会调用这些函数,因此您需要自己调用它们。查看TemplateView的文档,看起来您需要实现get_context_data方法,您可以在其中调用这些函数,并返回模板的上下文。