当前位置 : 主页 > 编程语言 > python >

Django(part10)--POST请求

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记,仅供参考 文章目录 ​​POST请求​​ ​​POST传递参数的获取​​ ​​举个例子​​ ​​取消CSRF验证​​ POST请求 POST传递参数的获取 客户端通过表单等POST请求将数据传递

学习笔记,仅供参考



文章目录

  • ​​POST请求​​
  • ​​POST传递参数的获取​​
  • ​​举个例子​​
  • ​​取消CSRF验证​​



POST请求



POST传递参数的获取



  • 客户端通过表单等POST请求将数据传递给服务器端
<form method="POST" action="/post_test/">
兔兔姓名:<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请求
if request.method == "GET":
处理1
elif request.method == "POST":
处理2
else:
处理3
  • 使用POST方式接收客户端数据
request.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/发起请求:

Django(part10)--POST请求_post



输入要POST的信息:

Django(part10)--POST请求_post请求_02

点击提交,出现403错误:

Django(part10)--POST请求_python_03

我们看到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/,输入数据,并提交:

Django(part10)--POST请求_html_04

成功啦!

上一篇:Django(part11)--MTV模式及模板
下一篇:没有了
网友评论