Django提交POST表单报”CSRF verification failed.”

环境

  • python 3.6
  • Django 2.0
  • PyCharm 2017.2

问题

当提交POST表单时,出现以下报错: CSRF verification failed. Request aborted.

解决方法

  • 查看setting.py,是否有'django.middleware.csrf.CsrfViewMiddleware':
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
  • 在表单处理函数文件头导入csrf_protect:

from django.views.decorators.csrf import csrf_protect

  • 在表单处理函数前加@csrf_protect:
@csrf_protect
def login(request):

    if request.method=='GET':
        return render(request,"login.html")
    else:
        print(request.GET)
        print(request.POST)

        user=request.POST.get("user")
        pwd=request.POST.get("pwd")

        if user == 'shunzi' and pwd == '123456':
            return HttpResponse('登录成功')
        else:
            return HttpResponse('username or password is error!')

再次执行,运行正常

继续阅读
shunzi
  • 本文由 发表于 2018-07-0411:48:16
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
ChatGPT注册教程 BLOG

ChatGPT注册教程

最近ChatGPT真受欢迎,但是有些人注册时会经常面临不服务它们的地区问题,现在我们给你详细问题解决。 准备 代理。要求是韩国,日本,印度,新加坡,美国这些国家的地址都合适。对其他的我们还不太清楚,反...
deepin linux v20.2系统安装 Linux

deepin linux v20.2系统安装

安装Deepin V20.2系统 最近因为学习需要,换了一台电脑,完了又是系统的安装。总之,docker环境折腾我了一个多星期。最后完美搞定。 ............ shunzi@thinkpad...
deepin linux V20系统安装 BLOG

deepin linux V20系统安装

安装系统 系统安装就不说了,网上一大把。以前用deepin linix 15.11系统非常舒服,后来因为办公环境需要,期间又换回windows,目前因为彻底能用linux办公了。一个字爽~ 系统跟新 ...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: