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 ...