一見シンプルなDjangoビューで作業しますが、エラーは継続します。Djangoビューエラーで自己復帰
class RegistrationView(View):
def get(self, request, *args, **kwargs):
context = {
"user_form": UserForm(),
"contact_form": ContactForm(),
"company_form": CompanyForm(),
}
return render(request, "accounts/registration_form.html", context)
def post(self, request, *args, **kwargs):
user_form = UserForm(request.POST)
contact_form = ContactForm(request.POST)
company_form = CompanyForm(request.POST)
if user_form.is_valid() and contact_form.is_valid() and company_form.is_valid():
self.form_valid()
else:
self.form_invalid(user_form, contact_form, company_form)
def form_valid(self):
return HttpResponseRedirect("/accounts/registration-complete")
def form_invalid(self, user_form, contact_form, company_form):
context = {
"user_form": user_form,
"contact_form": contact_form,
"company_form": company_form
}
return render_to_response(self.request, "accounts/registration_form.html", context)
私はis_valid()
上user_form、CONTACT_FORMとcompany_formをチェックすると、私はそのcompany_formが有効でないので、私はform_invalid()
方法に行く見ることができます。
ここでは、データが事前に入力され、画面にエラーが表示された同じビューにリダイレクトする必要があります。
今、私は私が
return render(self.request, "accounts/registration_form.html", context)
と
return render_to_response(self.request, "accounts/registration_form.html", context)
を交換するとき、私は別のエラー・メッセージが取得エラーTemplateDoesNotExist at /accounts/register/
を得る:
ValueError at /accounts/register/
The view accounts.views.RegistrationView didn't return an HttpResponse object.
完璧な理にかなっているが、私この問題を解決する方法がわかりません。 これには簡単な解決策があることを願っています。あなたのpost
方法で
'accounts/registration_form.html'にテンプレートがありますか?このエラーは、Djangoがそのテンプレートを見つけることができないことを示しています。 – solarissmoke
@solarissmokeはい、あります。私はget()メソッドで同じテンプレートを使用します –