Django: Save and restore a form's state using a cookie Django: Save and restore a form's state using a cookie django django

Django: Save and restore a form's state using a cookie


This already sounds like a good plan. But if there is no pressure on using cookies, I would resort to using the session instead. That way you won't hit a size limit on cookies, and transmitting cookies with higher size can slow down your response time.

form = MyForm(initial=request.session.get('form_data'))...if form.is_valid():    request.session['form_data'] = form.cleaned_data


As an extension to this, here is a way I have found to use sessions to save the form data with a class-based view:

from django.views.generic.edit import FormViewclass MyFormView(FormView):    template_name = 'myform.html'    form_class = MyForm    success_url = '/success/'    def get_form_kwargs(self):        """        The FormMixin uses this to populate the data from the POST request.        Here, first try to populate it from the session data, if any;        if there is POST data, it should override the session data.        """        kwargs = {'data': self.request.session.get('form_data', None)}        kwargs.update(super(MyFormView, self).get_form_kwargs())        return kwargs    def form_valid(self, form):        ...        # save the form data to the session so it comes up as default next time        self.request.session['form_data'] = form.cleaned_data        ...