2016-03-21 20 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 

Neden? Belgeleri takip ediyorum galiba.get_context_data çağrılmıyor get

+0

Bu sizin gerçek kodunuz mu? Burada bir hata yok, bu yüzden size yardımcı olması için gerçek kodunuzu biraz daha göstermelisiniz. – Gocht

+0

@Gocht minimum versiyonudur. Ve ben hiç bir hata alamıyorum. –

+1

Bu bir aşırı 'minimum'. Daha fazla kod paylaşmayı düşünün. – Gocht

cevap

3

Bir render senin .get() yöntemde iade etmek almalısınız

ConfigureView().get_context_data() 

veya

instance = ConfigureView() 
instance.get_context_data() 

sınıf örneğini ve çağırabilir Bu yöntem (render) param olarak bir bağlam alır, .get_context_data()'u çağırmaz, bunu yapmanız gerekir:

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

Çok teşekkür ederim. –

+0

@AdamSilver Artık daha fazla kodun neden gerekli olduğunu görebilirsiniz, lütfen bir dahaki sefere bir soru gönderdiğinizde bunu aklınızda bulundurun. – Gocht

+0

Ben yaparım. Yani şimdi bağlam formunda 'form' geçmek zorundayım? –

-1

Sen yöntemini baskı komutu

İlgili konular