我是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})
答案 0 :(得分:2)
你应该在这里改变两件事。
首先,如果请求是POST,您应该只进行表单验证。
其次,您应该始终在发布请求后重定向,即使它返回到同一页面;这将重置值。
答案 1 :(得分:1)
请注意,您的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})
答案 2 :(得分:0)
泰, 我发现 !我使用ajax来调用视图(为什么?我没有回复!) 现在我只使用{{1}}而且没关系!