2016-03-21 24 views
0
@method_decorator(login_required, name='dispatch') 
class BaseView(TemplateView): 
    template_name = '...html' 

    def dispatch(self, request, *args, **kwargs): 
     # ... 

     return super(BaseView, self).dispatch(request, *args, **kwargs) 


class ConfigureView(BaseView): 
    form_class = Form 
    template_name = 'configure.html' 

    def get(self, request, *args, **kwargs): 
     form = self.form_class(user=request.user) 

     return render(request, self.template_name, { 
      'form': form 
     }) 

    def post(self, request, *args, **kwargs): 
     form = self.form_class(request.POST, user=request.user) 

     if form.is_valid(): 
      form.save() 

      return redirect('...') 

     return render(request, self.template_name, {'form': form}) 

    def get_context_data(self, **kwargs): 
     print('**********') # Never printed 

     context = super(ConfigureView, self).get_context_data(**kwargs) 

     context['app'] = App.objects.get(slug=kwargs['slug']) 

     return context 

なぜですか?私はドキュメントに従っていると思います。get_context_dataが呼び出されない

+0

これは実際のコードですか?ここにはエラーはありませんので、実際のコードを少しだけ表示して助けてください。 – Gocht

+0

@Gochtは最小バージョンです。私は何の誤りもありません。 –

+1

極端な「最小」です。もっとコードを共有することを検討してください。 – Gocht

答えて

3

を取得するメソッド

ConfigureView().get_context_data() 

または

instance = ConfigureView() 
instance.get_context_data() 

を呼び出すことができ、このメソッド(render)は、コンテキストをパラメータとして受け取り、.get_context_data()を呼び出さないため、これを行う必要があります。

... 
get(self, request, *args, **kwargs): 
    # ... 
    return super(ConfigureView, self).get(request, *args, **kwargs) 
+0

ありがとうございました。 –

+0

@AdamSilverこれで、なぜコードがさらに必要になったのかを知ることができます。次回質問を投稿したときにそのことを覚えておいてください。 – Gocht

+0

私は:)それでは、私はコンテキストメソッドで 'フォーム'を渡す必要がありますか? –

-1

あなたは、クラスをインスタンス化し、あなたの.get()方法でrenderを返すされた印刷コマンド

関連する問題