【问题标题】:How to unset (delete) POST variable in python (Django)如何在python(Django)中取消设置(删除)POST变量
【发布时间】:2017-06-16 05:58:40
【问题描述】:

我是 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})

【问题讨论】:

    标签: python django session post django-views


    【解决方案1】:

    这里有两点你应该改变。

    首先,您应该只在请求是 POST 时进行表单验证。

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

    【讨论】:

      【解决方案2】:

      请注意,您的 del 在 return 之后,因此它永远不会被执行。但你应该这样做。

      你的麻烦是因为你没有遵循标准的 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})
      

      【讨论】:

        【解决方案3】:

        泰, 我发现 !我使用 ajax 来调用视图(为什么?我不记得了!) 现在我只使用<a href='...'></a> 就可以了!

        【讨论】:

          猜你喜欢
          • 2016-07-10
          • 2011-08-10
          • 1970-01-01
          • 2018-05-29
          • 2018-01-05
          • 2014-09-04
          • 2015-08-18
          • 2010-12-08
          • 1970-01-01
          相关资源
          最近更新 更多