Django视图

介绍

视图基本就是两部分
一个是请求对象request,request对象是在wsgi创建的 数据解析
一个是响应对象HttpResponse、render 也是wsgi创建的 按照http协议封装数据

请求对象

def index(request):
    
    print(request.method)
    return HttpResponse("OK")

获取请求数据

  • 获取请求方法

    request.method
    
  • 获取请求端口

    print(request.get_port())
    
  • 获取请求路径

    print(request.get_full_path())
    
  • 获取请求IP:PORT

     print(request.get_host())
    
  • 获取完成的请求URL

    print(request.get_raw_uri())
    
  • 获取content_type

    print(request.content_type)
    

获取请求体数据

  • 获取GET请求体

    当同一个键传入多个值的时候使用getlist就会获取全部数据list,一个键多个值使用get只会获取最后一个值

      get_data = request.GET
      print(get_data.get) # <bound method MultiValueDict.get of <QueryDict: {'user': ['zhq', 'zhq2'], 'pwd': ['123']}>>
      print(get_data.get("pwd")) # 123
      print(get_data.getlist("user")) # ['zhq', 'zhq2']
    
  • 获取POST请求体

    request.POST他只会获取到content_type=x-www-form-urlencoded格式的数据,request.body可以获取任意类型的body数据

    print(request.POST) # 返回 <QueryDict: {'user': ['zhq', 'zhq2'], 'pwd': ['123']}>  字典
    print(request.POST.getlist('user')) # ['zhq', 'zhq2'] 当同一个键传入多个值的时候使用`getlist`就会获取全部数据list,一个键多个值使用get只会获取最后一个值
    print(request.POST.get('pwd')) # 123
    
    
    • 获取请求的body数据

      获取所有的body数据 不管content_type是什么类型 都可以获取到

      print(request.body)
      

获取请求头

print(request.META)

响应对象

响应对象主要是有三种:响应对象主要有三种形式: HttpResponse()、render()、redirect()

  • 常用属性
    • content:返回的内容。

    • status:返回的HTTP响应状态码。

    • content_type:返回的数据的MIME类型,默认为 text/html 。浏览器会根据这个属性,来显示数据。如果是 text/html,
      那么就会解析这个字符串,如果 text/plain ,那么就会显 示一个纯文本。

    • 设置响应头: response['X-Access-Token'] = 'xxxx' 。

      def index(request):
      
          res = HttpResponse(content="<h1>OK</h1>",status=200,content_type="text/plain")
          res["user"] = "zhq" # 自定义响应头
          return res
      

JsonResponse

使用JosnResponse需要导入:from django.http import JsonResponse,常用属性和HttpResponse相同

  • 序列化一个字典

      from django.http import JsonResponse
    
      def index(request):
    
          book = {"title":"三国","price":299}
          return JsonResponse(book) # 返回json格式
    
  • 序列化一个列表

    def index(request):
        book = [{"title": "三国", "price": 299},{"title": "三国", "price": 299}]
        return JsonResponse(book,safe=False) # 将safe 设置成False 就可以序列还一个列表
    

render 返回一个模版

render 使用用来返回一个模版 也就是html,它还可以动态参数

redirect 重定向

将用户的请求重定向到另外一个URL上,详情见

posted @ 2022-11-26 09:06  zhq9  阅读(25)  评论(0编辑  收藏  举报