【发布时间】:2014-12-16 11:04:00
【问题描述】:
我已经创建了一个表单,我希望再次返回到同一个表单,这一次使用上下文数据,可以在我的模板中使用以显示表单已成功发送。
我该怎么做?
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'} 我可以在模板中阅读并呈现一个框,表明它已经成功。我不想切换到另一个静态页面!
【问题讨论】:
-
试试这个
return reverse('url_name', kwargs={'pk': pk}) -
我并不想传递一个 kwarg,因为我将不得不更改该页面的 url 模式。这似乎有点矫枉过正。我只想将一些变量传递给上下文。如果我使用你的方法,它在任何情况下都不会在不改变任何东西的情况下立即工作:
Reverse for 'ContactUsView' with arguments '()' and keyword arguments '{'pk': '12'}' not found. 1 pattern(s) tried: ['contact/$'] -
在这种情况下,您可以在 url 中使用可选参数。给你
urls.py。 -
url(r'^contact/$', ContactUsView.as_view(), name="ContactUsView"),
-
添加这样的网址:
url(r'^contact/(?P<success>\w+)$', ContactUsView.as_view(), name="ContactUsView"),并像这样更改您的视图:def ContactUsView(success=None):
标签: django django-forms django-templates django-views