• day_33:后端day04Django框架中的视图和请求、响应


    一、django中的视图

    1.定义

    视图是一个可调用的对象,能够接受用户的请求并返回响应。
    
    一般在视图中编写业务逻辑,约定将视图放在名为`views.py`的文件里,这个文件放置在项目或者应用目录中。

    2.函数视图

    最简单的视图,就是一个普通的python函数
    
    特点:
    
    1. 逻辑清晰好理解
    2. 复用性较差

    例子:

    3.类视图

    基于类的视图相对函数视图又不同的优势
    
    - 与特定的HTTP方法关联组织代码
    - 面向对象技术,复用性,可以将代码分解成可重用的组件

    类视图例子:

    as_view源码分析:

    1)

    2)as_view中的 view方法解析

     

     

     

    二。django中的请求和响应

    当页面被请求时,Django会创建一个HttpRequest对象,对象里就包含了请求的元数据。然后加载适当的视图,将HttpRequest对象作为第一个参数传递给视图,每个视图负责返回一个HttpResponse对象。

    1.HttpRequest对象

    1)常用属性

    - .body
    
    原始请求的body,格式时字节类型
    
    - .method
    
      http请求方法,是大写的
    
    - .GET
    
      一个类字典对象,包含携带的url参数
    
    - .POST
    
      一个类字典对象,包含给定的表单格式的post参数

    2)请求参数类型

    利用http协议向服务器发送参数有几种途径?
    
    a. 查询字符串参数
       - url中 ?后面的key=value形式的参数
       - 通过request.GET属性获取
    b. 请求体参数
       - form表单
         - 通过request.POST获取
       - json格式
         - 通过request.body获取
       - 文件
         - 通过request.FILES获取
    c. 路径参数
       - 在django中通过路由规则传递给视图

    例子:

    a.查询字符串参数:

     b.请求体参数

    json:

    文件:

     

     

    2.HttpResponse对象

    这个对象是开发者的责任,需要为每个视图负责实例化,填充和返回一个HttpResponse对象。

    存在于responsed.py的文件中,该文件定义了很多response的基类

     

    1. 传入字符串
    
       ```python
       response = HttpResponse()
       # 传入字符
       response.write("项目id为{}的详情页\n".format(pid))
       response.write("abcdefg")
       ```

    例子:

    2. 设置头字段
    
       ```python
       response.headers['age'] = 120 
       ```

    例子:

     

    3.JsonResponse对象

    1)基本使用

    ```python
    JsonResponse({'code': 1, 'msg': '登录失败'})
    ```

    2)序列化非字典对象(需要加safe=False,不然会报错)

    ```python
    JsonResponse([{'code': 1, 'msg': '登录失败'}], safe=False) # safe不传会报错
    ```

    成功例子:

    报错例子:

    3)返回非json序列化支持的数据类型,会报错

    例子:

    原因:

    爱折腾的小测试
  • 相关阅读:
    C++中的ravalue学习笔记
    C++中的抽象类
    C++中的显式类型转换
    C++中的继承和多继承
    C++中的多态
    Yocto学习笔记
    HIDL学习笔记
    hadoop2.5搭建过程
    《Redis设计与实现》学习笔记
    40 数组中只出现一次的数字
  • 原文地址:https://www.cnblogs.com/newsss/p/15511881.html
Copyright © 2020-2023  润新知