如何在python(Django)中取消设置(删除)POST变量



我是Django和Python的初学者!我遇到了一个问题!

我尝试在我的软件中制作一个会话系统。当用户断开连接(通过按钮(时,用户将被重定向到连接页面。

不幸的是,form.is_valid(( 仍然有效,因此自动再次连接用户。

我不知道为什么?我该如何重置表单或 POST 值。

谢谢

托马斯

ps :连接视图的代码(在我的应用程序的 views.py(是:

def connexion(request):
contact_form = Connect(request.POST or None)
if contact_form.is_valid():
    print(contact_form.cleaned_data["id"])
    user_check = uc(contact_form.cleaned_data["id"], contact_form.cleaned_data["pwd"])
    if user_check.identity_verified:
        request.session['usr'] = user_check.get_compact_value()
        return redirect(home)
    else:
        return render(request, 'conn\connexion.html', {'form': Connect, 'errorId': True})
    del user_check
else:
    return render(request, 'conn\connexion.html', {'form': Connect, 'errorId': False})

这里有两件事你应该改变。

首先,仅当请求是 POST 时,才应执行表单验证。

其次,您应该始终在发布请求后重定向,即使它返回到同一页面;这将重置值。

请注意,您的del是在返回之后,因此永远不会被执行。但你根本不应该这样做。

你的麻烦是因为你没有遵循成功的表单提交后重定向的标准 django 模式。

def connexion(request):
    contact_form = Connect(request.POST or None)
    if request.method == 'POST':
        if contact_form.is_valid():
            print(contact_form.cleaned_data["id"])
            user_check = uc(contact_form.cleaned_data["id"], contact_form.cleaned_data["pwd"])
            if user_check.identity_verified:
                request.session['usr'] = user_check.get_compact_value()
                return redirect(home) # redirect ok
            else:
                return redirect('somewhere else')
    return render(request, 'conn\connexion.html', {'form': Connect, 'errorId': False})

Ty,我找到 !我用ajax来调用视图(为什么?我没有回复!(现在我只用<a href='...'></a>就可以了!

最新更新