学习笔记,仅供参考 文章目录 POST请求 POST传递参数的获取 举个例子 取消CSRF验证 POST请求 POST传递参数的获取 客户端通过表单等POST请求将数据传递
学习笔记,仅供参考
文章目录
- POST请求
- POST传递参数的获取
- 举个例子
- 取消CSRF验证
POST请求
POST传递参数的获取
- 客户端通过表单等POST请求将数据传递给服务器端
兔兔姓名:<input name="bunnyname" type="text">
<br>
兔兔年龄:<input name="bunnyage" type="text">
<br>
<input type="submit">
</form>
注意!在上面的例子中,参数action所对应的路径为提交表单的地址,它是一个相对路径,是相对于当前服务器所在地址的路径 。这里,提交表单的绝对路径是http://127.0.0.1:8000/post_test/
- 服务器端接收参数
- 通过request.method来判断是否为POST请求
处理1
elif request.method == "POST":
处理2
else:
处理3
- 使用POST方式接收客户端数据
request.POST.get('参数名', '')
request.POST.getlist('参数名')
举个例子
views.py
def post_test(request):html = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>兔兔提交</title>
</head>
<body>
<form method="POST" action="/post_test/">
兔兔姓名:<input name="bunnyname" type="text">
<br>
兔兔年龄:<input name="bunnyage" type="text">
<br>
<input type="submit">
</form>
</body>
</html>
"""
if request.method == "GET":
return HttpResponse(html)
elif request.method == "POST":
bunnyname = request.POST['bunnyname']
bunnyage = request.POST['bunnyage']
postHtml = "您的姓名为" + bunnyname + ",年龄为" + bunnyage
return HttpResponse(postHtml)
else:
return HttpResponse("其他方式")
urls.py
urlpatterns = [path('admin/', admin.site.urls),
re_path(r'post_test/$', views.post_test),
]
向http://127.0.0.1:8000/post_test/发起请求:
输入要POST的信息:
点击提交,出现403错误:
我们看到CSRF验证失败,请求被中断,这时,我们需要取消CSRF验证,这样Django才不会拒绝客户端发来的表求。
那么,该如何取消CSRF验证呢?
取消CSRF验证
我们可以注释掉settings.py文件里MIDDLEWARE列表中的 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',
]
我们再次访问http://127.0.0.1:8000/post_test/,输入数据,并提交:
成功啦!