【问题标题】:Django - leaving blank form when session doesn't existDjango - 会话不存在时留下空白表单
【发布时间】:2017-10-11 11:30:52
【问题描述】:

我有一个关于从会话中填写注册表单的问题。我有 3 步注册表单,可将​​数据保存到会话。当用户退后时,我正在尝试用以前的答案填充表单数据。我设法做到了,但是现在会话为空时我遇到了问题。这是有问题的代码:

    if request.session['form_data_page_1']:
        korisnik = Forma1(initial=request.session['form_data_page_1'])
    else:
         korisnik = Forma1()

当我这样做时,我不断收到'KeyError at /start/dadilja/1/' - 'form_data_page_1'。我也尝试过这样做:

    if request.session['form_data_page_1'] is not Null:
        korisnik = Forma1(initial=request.session['form_data_page_1'])
    else:
         korisnik = Forma1()

还有这样的:

try: 
    korisnik = Forma1(initial=request.session['form_data_page_1'])
except:
    korisnik = Forma1()

但是当我这样做时,我会得到带有提交按钮的空白页面。如何正确执行此操作,在会话为空时获取空白表单,并在会话存在时使用会话数据填充表单?提前致谢。

雷纳托

【问题讨论】:

    标签: django forms session


    【解决方案1】:

    会话实现了一个字典接口,因此您可以使用.get,如果找不到键,则返回 None。

    korisnik = Forma1(initial=request.session.get('form_data_page_1'))
    

    【讨论】:

      【解决方案2】:

      试试这个

      当您尝试使用 request.session['form_data_page_1'] 从字典中获取密钥并且密钥不存在于字典中时,它会给您带来密钥错误。所以首先检查密钥是否存在 通过使用request.session.get('form_data_page_1'),如果 key 不存在则返回 None,如果 key 存在则返回 value。

      if request.session.get('form_data_page_1'):
          korisnik = Forma1(initial=request.session['form_data_page_1'])
      else:
          korisnik = Forma1()
      

      希望对你有帮助

      【讨论】:

      • 谢谢。现在我得到没有表单且只有提交按钮的页面。我不知道为什么它不起作用。
      • 您的Forma1() 究竟返回了什么?如果它返回一个空白表单,那么您的模板没有得到一个表单并且它显示为空白。
      • 问题出在我的 html 模板中,现在可以使用了。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多