Django - 当会话不存在时留下空白表格

时间:2017-10-11 11:30:53

标签: django forms session

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

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

当我这样做时,我一直在/ 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()

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

雷纳托

2 个答案:

答案 0 :(得分:0)

会话实现字典界面,因此如果找不到密钥,您可以使用.get返回None。

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

答案 1 :(得分:0)

试试这个

当您尝试使用request.session['form_data_page_1']从字典中获取密钥并且字典中不存在密钥时,它会为您提供密钥错误。所以首先检查关键是否存在  通过使用request.session.get('form_data_page_1'),如果密钥不存在则返回无,如果密钥存在则返回值。

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

希望这有助于你