0

私は Django (1.5) が初めてで、基本的な POST フォームを実行しようとしています。フォームをTemplateView実装する があります (を使用してテンプレートに渡されget_context_dataます)。

フォームが何らかの理由 (検証エラーなど) で失敗した場合ユーザーが入力したデータを含むフォームを再度表示したいと考えています。成功したら、成功ページ (作成したばかりのアイテムなど)リダイレクトしたいと考えています。

これまでに行ったことは次のとおりです。

class WriteForm(forms.Form):
    subject = forms.CharField()
    text = forms.CharField(widget=forms.Textarea)
    # some other stuff

class WriteView(MailboxView):
    # MailboxView extends TemplateView and defines some context
    template_name = 'messages/write.html'
    form_data = None

    def post(self, request, *args, **kwargs):
        # treat form data...
        # lets make things simple and just assume the form fails
        # I want to do something like that:
        self.form_data = request.POST
        # should I return something?

    def get_context_data(self, **kwargs):
        context = super(WriteView, self).get_context_data(**kwargs)
        if self.form_data is None:
            context['form'] = WriteForm()
        else:
            context['form'] = WriteForm(self.form_data)
        return context

前もって感謝します!

4

1 に答える 1