Django |传递形式值

时间:2010-05-21 14:01:21

标签: django

我想创建一个用户注册过程,需要两个不同的表单,相同的数据一个(第一个表单)用于填写数据,另一个(第二个表单)用于显示填充的数据作为总结(之前)实际保存数据)然后用户可以查看他/她已填满的内容...我的问题是如何将第一个表单的数据传递到第二个...我使用了基本的Django表单操作机制并通过了使用Django模板标签将字段值表示到下一个表单..

if request.method == 'POST':
    form = Users(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        try:
            name = cd['fullName']
            email = cd['emailAdd']
            password1 = cd['password']
            password2 = cd['password2']
            phoneNumber = cd['phoneNumber']
            return render_to_response('signup2.html', {'name': name, 'email': email, 'password1': password1, 'password2': password2, 'phone': phone, 'pt': phoneType})
        except Exception, ex:
            return HttpResponse("Error %s" % str(ex))  

从第二个开始我只是使用标签显示这些字段值,并使用隐藏字段以提交带有值的表单,如下所示:

<label for="">Email:</label> {{ email }} <input type="hidden" id="" name="email" class="width250" value="{{ email }}" readonly />

从外观看起来很好用,但真正的问题是,如果有人查看html的来源,他可以简单地获得密码,即使是黑客也可以轻松搞定。那么我该如何避免这个问题......我不想使用Django会话,因为这只是一个简单的注册过程,而且没有涉及其他交互。

感谢。

3 个答案:

答案 0 :(得分:1)

将密码放入会话中。在密码框中显示“奇怪的”默认值,并检查它是否已更改。

答案 1 :(得分:0)

我不确定你为什么不想使用这个会话。就用户而言,则不会看到它或与之交互。如果您安装了会话中间件,它将处于活动状态。

答案 2 :(得分:0)

您可以在用户会话中保存密码,而不要在表单中打印密码。如果用户之后想要更改密码(这在注册过程中很少见,请承认。),您可以添加“返回步骤1以更改密码”链接。

TL; DR:在我看来,如果用户已经验证了表单,它将不会在第二步更改密码,因此您不需要为其显示字段。