Python之后端Django(四)

Day/4

“第二种途径:查询字符串传参”

1、它通过?区分路由信息和查询字符串参数

定义在django.http.QueryDict
HttpRequest>对象的属性GET~POST都是Query Dict类型的对象
与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

2、查询字符串不区分请求方式,都可以通过request.GET 来获取字符串 它是一个QueryDict对象

两大方法:get()(键不存在返回None), getlist()(键不存在返回空列表[])

完整的语法格式:request.Get.get(‘键’, 默认值) request.Get.getlist(‘键’, 默认值) 默认值:自定义返回值,当没有键的时候

注意:测试时先要在setting文件中middleware=后面的’django.middleware.csrf.CsrfviewMiddleware’, 注释点,解除csrf防护

“第三种途径:请求体(body)”

1、通过request.POST 获取字符串数据,它是一个QueryDict对象

2、两大方法:get() getlist()

3、关掉django默认开启的CSRF防护,否则会报错 ,在settings.py里middlewire参数

django.middleware.csrf.CsrfviewMiddleware

“第四种途径:请求头”

1、通过request.META获取,但是很少很少用!

2、在使用postman发送json数据的时候,必须注意,json数据是双引号,否则会报错(点击body-raw-Test选择json的)

“其他常用的httorequest对象属性”

1、request.user 判断当前的用户是否是登录的

2、request.method 判断它的请求方式

HTTPresponse对象:

“核心重点”:如何构建HttpResponse对象

“语法格式”:

1、HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)

2、注意:httpresponse传递的是字符串,若想传递字典建议使用JsonResponse,它是前者的子类

3、使用jsonresponse的时候,如果传递的不是字典数据,需要一个参数 safe=False

重定向:

“问题”:假设想从视图函数A跳转到另一个视图函数B,改怎么办

“解决办法”:使用redirect()函数

注意:切记首页使用重定向到首页,会陷入死循环

状态保持-cookie及session:

实现状态保持的两种方式(主要):

1、在客户端存储信息使用cookie (网页会将一些信息存储到你的电脑上)

2、在服务器段存储信息使用session

Cookie:有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户
本地终端上的数据(通常经过加密)·

“原理”:

第一次请求过程:

1、浏览器第一次发送请求的时候是不会携带任何cookie信息的

2、服务器收到请求后,校验有没有cookie信息

3、服务器会设置一个cookie,放置到响应中

4、浏览器接收到响应后,发现里面有cookie信息,拿出来保存

第二次及其后请求过程

5、浏览器第二次及其后请求,都会携带cookie信息

6、服务器接收到请求后进行校验,发现cookie信息,来实现辨别用户身份

“注意”:读取cookie信息的时候,第一次设置cookie是读取不到的,只有第二次才能读取到,原因在于设置cookie信息是通过响应对象HttpResponse,而读取时通过request

相关推荐

  1. Python之后Django

    2024-07-21 23:50:02       29 阅读
  2. Python之后Django(三)

    2024-07-21 23:50:02       29 阅读
  3. Python之后Django(五)

    2024-07-21 23:50:02       25 阅读
  4. Python之后Django(六)

    2024-07-21 23:50:02       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 23:50:02       133 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 23:50:02       147 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 23:50:02       123 阅读
  4. Python语言-面向对象

    2024-07-21 23:50:02       133 阅读

热门阅读

  1. n4.Nginx 核心模块

    2024-07-21 23:50:02       24 阅读
  2. android audio 相机按键音:(二)加载与修改

    2024-07-21 23:50:02       30 阅读
  3. 数字转换(树形DP)

    2024-07-21 23:50:02       28 阅读
  4. python 爬虫技术 第03节 基础复习 控制结构

    2024-07-21 23:50:02       24 阅读
  5. Python 模块导入方式

    2024-07-21 23:50:02       33 阅读
  6. 基于最新版的flutter pointycastle: ^3.9.1的AES加密

    2024-07-21 23:50:02       26 阅读
  7. Shiro-550反序列化漏洞

    2024-07-21 23:50:02       23 阅读
  8. Kotlin单例、数据类、静态

    2024-07-21 23:50:02       30 阅读