如何在success_url中传递上下文数据?

时间:2014-10-21 09:14:33

标签: django django-forms django-templates django-views

我已经创建了一个表单,我希望再次返回相同的表单,这次使用可以在我的模板中使用的上下文数据来显示表单已成功发送。

我该怎么做?

class ContactUsView(FormView):
    form_class = ContactUsForm
    template_name = 'website/pages/contact_us.html'

    def form_valid(self, form):
        form.send_email()
        return super(ContactUsView, self).form_valid(form)

    def get_success_url(self):
        # Something here?

所以我基本上希望get_success_url返回ContactUsView,例如{'success':'true'}我可以在模板中阅读并呈现一个表示已成功的方框。我不想换到另一个静态页面!

1 个答案:

答案 0 :(得分:4)

将这样的网址添加到urls.py

url(r'^contact/(?P<success>\w+)$', ContactUsView.as_view(), name="ContactUsView"),

您可以在class-based视图中访问此参数,如下所示:

get_context_data方法添加到class-view

class class ContactUsView(DetailView):
    context_object_name = 'my_var'

    def get_context_data(self, **kwargs):
        context = super(ContactUsView, self).get_context_data(**kwargs)
        context['success'] = self.success
        return context

您可以在模板中使用{{ my_var.success }}