request对象方法

request对象方法

一、前置知识点:form表单

  form表单默认是以get请求提交数据:http://127.0.0.1:8000/login/?username=admin&password=123

  form表单的action属性:

    1.不写,默认朝当前地址提交数据

    2.全路径

    3.后缀(/index)

 

  当网页提交post请求的时候,需要先去settings.py配置文件中注释掉一行代码(csrf中间件):

    'django.middleware.csrf.CsrfViewMiddleware',

 

视图函数应该做到针对不同的请求,作出不同的处理逻辑

  eg:

    get请求来,应该只需要返回一个html文件

    post请求来,应该获取用户提交的数据,然后做进一步的处理必须要先能够判断出当前请求到底是什么请求

 

 

二、request获取前端请求方式的方法

1、request.method

  结果是一个纯大写的字符串  GET/POST

 

2、request.POST

  获取post请求提交的数据    类似是一个大字典

# <QueryDict: {'username': ['admin'], 'password': ['123']}>
request.POST.get()    # 只会取列表最后一个元素
request.POST.getlist()    # 取出一个列表

 

3、request.GET

  获取符合get请求携带数据格式的数据,get提交请求数据格式:url?xxx=yyy&ooo=lll

# <QueryDict: {'username': ['admin'], 'password': ['123']}>
request.GET.get()    # 只会取列表最后一个元素
request.GET.getlist()    # 取出一个列表

 

通常情况下针对不同的请求,应该做不同的处理,而一般情况下get请求次数要远远多于post请求,所以我们应该针对非get请求作出逻辑判断,将get请求直接写在函数体内而不做判断

def login(request):
    # 获取前端请求方式
    # print(request.method)
    # if request.method == 'GET':
    #     # get逻辑
    #     return render(request, 'login.html')
    # elif request.method == 'POST':
    #     # post逻辑代码
    #     # 获取数据
    #     return HttpResponse('收到!')
    """
    为了减少代码的层级:一般情况下视图函数处理get请求较多,所以可以直接在函数体内先写get请求对应逻辑代码,
    将其他请求利用request.method做出区分
    """
    if request.method == 'POST':
        print('POST请求对应的逻辑代码')
        return HttpResponse('收到!')
    print('GET请求对应的逻辑代码')
    return render(request, 'login.html')
posted @ 2020-12-05 19:55  chchcharlie、  阅读(315)  评论(0编辑  收藏  举报