5.-GET请求和POST请求
一、定义
无论是GET请求还是POST,统一由视图函数接收请求,通过判定request.method区分具体的请求动作
二、GET处理
GET请求方式中,如果有数据需要传递给服务器,通常会用查询字符串(Query String)传递(注意不要传递敏感数据)
URL格式: xxx?参数名1=值1&参数名2=值2...
服务器接收参数
获取客户端请求GET请求提交的数据
# 请求地址为http://127.0.0.1/index?a=1&b=2
request.GET['参数名'] #QueryDict 例如 request.GET['a'] 输出结果为1,,如果有多个同名参数,会获取的一个,如果参数不存在,会报错
request.GET.get('参数名','默认值') 例如 request.GET.get('c','no c') #如果参数C存在,输出C的值,如果不存在,输出定义信息no c
# 请求地址为 请求地址为http://127.0.0.1/index?a=1&a=2&a=3
request.GET.getlist('参数名') 例如 request.GET.getlist('a') 如果参数有同名参数,会输出同名参数的所有值
三、POST处理
POST请求动作,一般用于向服务器提交大量/隐私数据
服务器接收参数,通过request.method来判断是否为post请求
使用POST方式接收客户数据 request.POST['参数名'] request.POST.get('参数名','默认值') request.POST.getlist('参数名')
四、 CSRF验证
post需要取消csrf验证,否则Django 将会拒绝客户端发来的POST请求,报403响应
如果有csrf验证,前端需要添加{% csrf_token%}
取消验证方式:
注释掉settings.py 中 MIDDLEWARE 的CsrfViewMiddleware中间件