Django-04 GET和POST
2021-07-09 本文已影响0人
JuliusL
- 无论是GET还是POST,统一由视图函数接收请求,通过判断request.method区分具体的请求动作
- 样例:
if reuqest.method == 'GET':
处理GET请求时的业务逻辑
elif requset.method == 'POST':
处理POST请求的业务逻辑
else:
其他请求业务逻辑
1,GET处理
- GET请求动作吗,一般用于向服务器获取数据
- 能够产生GET请求的场景
- 浏览器地址栏中输入URL,回车后
- <a href="地址?参数=值&参数=值">
- form表单中的method为get
- GET请求方法中,如果有数据需要传递给服务器,通常会用查询字符串(Query String)传递【注意:不要传递敏感数据】
- URL格式:xxx?参数1=值1&参数名2=值2...
- 服务器端接收参数:
def test_get_post(request):
if request.method == 'GET':
print(request.GET)
print(request.GET.get('c','no c'))
print(request.GET.getlist('a'))
pass
elif request.method == 'POST':
pass
else:
pass
return HttpResponse('test post get')
打印:
<QueryDict: {'a': ['1', '2', '3']}>
no c
['1', '2', '3']
2,POST处理
- POST请求动作,一般用于向服务器提交大量/隐私数据
- 使用post方式接收客户端数据:
POST_FORM = '''
<form method='post' action="/test_get_post">
用户名:<input type="text" name="username">
<input type='submit' value='登录'>
</form>
'''
def test_get_post(request):
if request.method == 'GET':
print(request.GET)
print(request.GET.get('c','no c'))
print(request.GET.getlist('a'))
return HttpResponse(POST_FORM)
elif request.method == 'POST':
print('username is ',request.POST['username'])
return HttpResponse('post is ok')
else:
pass
return HttpResponse('test post get')
取消csrf验证
- 取消csrf验证,否则Django将会拒绝客户端发来的POST请求,报403响应
- 禁止掉settings.py中MIDDLEWARE中的CsrfViewsMiddleWare的中间件
MIDDLEWARE=[
...
# 'django.middleware.csrf.CsrfViewMiddleware',
...
]