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

Вы возвращаете render в методе .get(), этот метод (render) получает контекст как параметр, он не вызывает .get_context_data(), вам необходимо сделать следующее:

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

Большое вам спасибо. –

+0

@AdamSilver Теперь вы можете понять, зачем нужен еще код, пожалуйста, помните об этом в следующий раз, когда отправляете вопрос. – Gocht

+0

Я так :) Итак, теперь я должен передать «форму» в контексте метода? –

-1

Вы можете создать экземпляр класса, и вызвать метод

ConfigureView().get_context_data() 

или

instance = ConfigureView() 
instance.get_context_data() 

, который должен попасть в команду печати

Смежные вопросы