Django学习--HttpRequest和 HttpResponse 对象

HttpRequest对象

1.提取URL的特定部分

如果想从URL中获取值,使用正则分组来获取url中的参数方式有个两种:

  1. 位置参数,参数位置需要一一对应:

    应用urls.py

    3.1.png

    视图函数中的参数需要和路由的参数一一对应,参数位置不能错

    3.2.png

    3.3.png

  2. 关键字参数,参数的位置可以变,跟关键字保持一致即可:

    应用的urls.py中,定义路由地址,需要使用?P<名字>给正则分组起名字

    41.1.png

    视图函数中的参数,除了request之外的形参位置随意指定,和路由定义的一致即可.
    4.2.png

    3.3.png

2.获取GET请求中的参数

获取GET请求的参数,形如http://ip:port/route/?key1=value1&key2=value2;

1.在视图函数中通过request.GET获取请求中?之后的参数,返回的是一个QueryDict对象,类似字典,不同的是QueryDict对象,存在一键多值的方式;

1.png

2.QueryDict对象

  • 通过get(key)获取值,如果存在多个值得时候,获取最后值列表中最后一个值
  • 需要获取多个值得之后,通过getlist(key),获取键所有的值

    2.png

3.获取请求体中的数据

1. 表单数据

我们通过postman模拟浏览器提交form数据:

postman.png

提示错误
111.png

tim截图20180722095909.png

django默认开启csrf保护,我们暂时关闭csrf保护,在settings文件中
11.png

浏览器发送的form数据,通过request.POST获取,返回的是QueryDict对象
22.png

  • 通过get(key) 获取一个数据
  • 通过getlist(key) 获取所有数据

2. json数据

  1. 使用request.body获取非表单提交的数据
  2. 获取的数据返回的是二进制数据,所以我们需要对数据做转换成json数据

2.1.png

2.2.png

4.获取请求头中的数据

  • 获取请求方式 request.method

* 获取认证用户 request.user

HttpResponse对象

HttpResponse 对象

HttpResponse (content,content_type,status)对应的参数
content-->返回的内容
content_type--> MIME 类型
status-->响应状态码

JsonResponse

若要返回json数据,可以使用JsonResponse来构造响应对象,作用:

  • 帮助我们将数据转换为json字符串
  • 设置响应头Content-Type为application/json

如果需要将字典放到列表中,进行转换的时候,需要将 safe 改为False ,否则会提示错误:

tim截图20180722105610.png

将 safe 改为False:

from django.http import JsonResponse

def response(request):
    list = [{'name':'itcast'},{'name':'itheima'}]
    return JsonResponse(list,safe=False)

redirect

重定向到新的地址中
from django.shortcuts import redirect

def response(request):
    return redirect('www.baidu.com')

猜你喜欢

转载自blog.csdn.net/weixin_40420525/article/details/81157952