Django:使用cookie保存并恢复表单的状态

ola*_*ndo 13 forms django cookies state restore

我想创建一个表单,一旦提交,在每次下一次呈现同一用户的表单时,表单将填写上次用户提交的数据.听起来像django应该有捷径的东西 - 它有吗?如果不是最简单的方法呢?

我能想到的最好的方法就是cleaned_data将它作为一个cookie进行腌制并保存,以后再重新创建它.

Rei*_*cke 21

这听起来像个好计划.但如果没有使用cookie的压力,我会采用会话.这样您就不会达到cookie的大小限制,并且传输更大的cookie可能会减慢您的响应时间.

form = MyForm(initial=request.session.get('form_data'))
...
if form.is_valid():
    request.session['form_data'] = form.cleaned_data
Run Code Online (Sandbox Code Playgroud)

  • 如果有效负载中有日期,则此操作将不起作用。您会收到此错误:“TypeError:‘date’类型的对象不可 JSON 序列化”。您可以使用:`form_data = json.dumps(list(form.cleaned_data),cls=DjangoJSONEncoder)` (2认同)