2017-03-08 12 views
0

クラスにはテンプレートが接続されています。その中には2つの関数があります.1つはユーザーを認証するためのもので、もう1つは実際にはいくつかのデータを取得し、それを私のテンプレートにプッシュします。しかし、print('whatever')を使用すると、クラスを呼び出すときにどちらの関数も呼び出されないことがわかります。どうして?クラスベースビュー内で2つの関数を呼び出す - Django

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'), 

シェルは明らかに何かがプリントアウトさを示していない、とテンプレートはmetricsおよび/またはprofile_id

答えて

2

これらの関数をレンダリングしていないだろうデフォルトでは呼び出されないので、自分で呼び出す必要があります。 TemplateViewのドキュメントを見ると、get_context_dataメソッドを実装する必要があるように見えます。これらのメソッドを呼び出すことができ、テンプレートのコンテキストを返すことができます。

関連する問題