get_context_data未被调用

2024-09-29 19:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

@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

为什么?我想我是在看医生。在


Tags: nameselfformgetreturnrequestdefcontext
2条回答

在您的.get()方法中返回render,此方法(render)接收上下文作为参数,它不调用.get_context_data(),需要执行以下操作:

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

您可以实例化该类,并调用该方法

ConfigureView().get_context_data()

或者

^{pr2}$

它应该可以到达print命令

相关问题 更多 >

    热门问题