Django-04 GET和POST 1,GET处理 2,POST处理

  • 无论是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',
  ...
]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章