FormViewを使用する時のform_valid関数について
form_valid関数は、データがポストされた時に呼ばれるメソッドとのこと。
そして、HttpResponseを返さないといけないとのこと。
また、htmlの方には{{ form.as_p }}という表記で書かれたりしますが、
これは、pタグで囲って表示という意味。
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Send message"> </form>
こんな感じになる。
from myapp.forms import ContactForm from django.views.generic.edit import FormView class ContactView(FormView): template_name = 'contact.html' form_class = ContactForm success_url = '/thanks/' def form_valid(self, form): # This method is called when valid form data has been POSTed. # It should return an HttpResponse. form.send_email() return super().form_valid(form)
こちらはドキュメントから参考にしたソースコード。 success_urlというのが、form_valid()がリダイレクトするURLを指している。 なので、contact.htmlへ飛んで、実行されたら/thanks/へリダレクトされる。