解决:禁止访问 (403) CSRF验证失败

在测试Django框架POST请求方式时,程序报错如下

在确保访问安全的情况下有一下两种方式:

1、在相应html文件form代码块中添加如下代码:

<form method="post" action="/method_show/">
    {% csrf_token %}  <!-- 改行代码为添加部分   -->
    <input type="submit" value="post方式">
</form>

但是仅仅添加这句代码,有时候并不能解决如上报错问题,至少在我测试过程中未能有效解决

那么就需要使用第二种方法

2、在相应view视图函数种添加如下代码:

# 首先在应用views.py文件中导入该方法
from django.views.decorators.csrf import csrf_exempt


# 在视图函数位置添加该装饰器
@csrf_exempt
def method_show(request):
    return HttpResponse(request.method)

此时可将方法1中添加的方法注释(不注释也行)

由此变解决了代码报错问题

3、非安全方式

如下将csrf中间件代码块注释掉,也可解决上述报错问题,但是该方法不安全

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',
]

猜你喜欢

转载自blog.csdn.net/lyw5200/article/details/109306195
403