Django(part10)--POST请求

学习笔记,仅供参考




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/发起请求:


输入要POST的信息:

点击提交,出现403错误:

扫描二维码关注公众号,回复: 11341981 查看本文章

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

成功啦!

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/106749767
今日推荐