【Django学习笔记 - 5】:请求和响应

简介: 【Django学习笔记 - 5】:请求和响应

一、初步了解请求和响应


1、请求

请求就是浏览器(客户端)通过http协议或者HTTPS向服务器发送请求获取数据
Django中前端向后端传参数方式:


查询字符串参数


请求体参数:

  • form表单传参
  • json格式参数
  • 上传文件


请求头传参


路径参数:

  • url路径中的参数


81a267f05577458ba98d83b9bfbf2467.png


2、响应


响应是什么?

aa916bbac4fa4e908c443ae690f9e2fc.png




二、url参数获取


示例:根据城市和日期为路由路径参数,并获取出路由参数,进行逻辑判断,返回相应的天气情况


首先在跟路由中写上路由分发的代码语句

b195d54a8e584f9fb6d0a04503ab49be.png


  • 然后使用re_path,在子路由中写上匹配路由路径的语句

(?P[a-z]+):表示通过正则匹配,匹配从a-z字母的一个或多个,并赋值给city


(?P\d{8}):表示通过正则匹配,匹配8个数字长度,并赋值给year


d46b9a8e95a04bac8d1ac8801d27c905.png


在 views.py 文件中写入函数

8166525d77cd4479ade88e1207920904.png


运行Django项目,在浏览器url路径中写入正确的请求路径之后,参数被打印出来

87194af0afc94958ba67e4e03868cf5e.png

71f89da115a444b69debcd7ffcd84d8e.png

在views.py中完善代码逻辑

42742630a798430b8ab8044e385e8abe.png

运行Django项目,查看执行结果

cdbf2a28c7ab432989f39c52e4784e35.png



三、请求中获取参数


1、get请求中的参数



获取参数的方法:


获取单个数据:request.GET.get('a') (当请求参数中有多个a的时候,get会往下匹配到最后一个参数a,如果要获取所有的参数a,就要使用getlist)


获取多个数据:request.GET.getlist('a')


在views.py文件中,新建一个函数,欲在请求路径中添加参数


7b8ebc5c586240798e199bdee2236b29.png

运行Django项目,在请求路径中添加参数

?a=100&b=200


7bab23b6834d4f40b27ade15f0ce005e.png

回车运行后,通过debug可查看请求参数所在的地方


2cb71717e67a41b996ef8518009c3b36.png

在运行结果中查看是否打印出请求参数

bcec270e08d2406987d0ea44ebf48d93.png

在请求路径中再添加一个请求参数a7229d173115f4531b01254f595327f23.png

回车后查看运行结果,发现只有最后一个参数a被匹配出

61a07122bf884cee988672e133f40629.png

将get改为getlist,运行查看结果

6cadf39434564cc9b3cf5d7a35a5559b.png

7d02e6edb0324259bafcacd446b3ba07.png




2、form表单参数:post请求


以下操作中将在Postman中进行,通过Postman向请求路径发送请求


在Postman中设置好form表单,使用post请求向请求路径发送请求


7d2ec83f0b524b39835175e07a1f5819.png

在views.py中重新写函数,使用debug

e036eeab545947bf8ada899f795c8803.png


  • 然后在settings.py中的中间件注释一个代码语句

如果不注释次语句,使用Postman发送请求时就会返回一个403的响应 ,这个是Django的保护机制


f9462b5c8b5e4e69819d15e4d6e8c50f.png


在Postman中点击“Send”,然后通过debug查看参数


df91c2b3d3e64266b04e10f097af9126.png


表单参数的获取

requset.POST.get(键名)


添加获取表单参数的代码语句

31e17165165d4d16997876dc67eacfd9.png


重新运行manage.py,然后在Postman中点击“Send” ,即可看到表单参数被打印出来

5e4ba1e199ea4bea91dc932f67f16fcd.png




3、json数据类型


json数据和字典的区别:


字典可以用单引号和双引号,例如:{"name":"阿峰"},{'name':'阿峰'}

而json数据只能用双引号,例如:{"name":"阿峰"}


在views.py文件中写入获取json数据和转换json数据的代码逻辑

d3fb63020bd14f069491fc8e50044330.png

添加路由

7db24a5dea504c99a9f9b87676a06cf0.png

在Postman中给响应体写上json数据

f71f4a9a4f1645319c75c540cabc7ad2.png


运行Django,使用debug查看数据所在位置

a2e7f238734f46b2a0afbf7bfa4ec6fa.png

a0b0a249cb8c4d39b165467e3b902655.png


相关文章
|
Python
Django模板加载与响应2
Django模板加载与响应2
63 0
|
2月前
|
存储 前端开发 Serverless
中后台前端开发问题之Django项目中接收和处理用户的抽奖请求如何解决
中后台前端开发问题之Django项目中接收和处理用户的抽奖请求如何解决
14 0
|
5月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
227 7
|
4月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
4月前
|
JSON 缓存 前端开发
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
|
4月前
|
前端开发 JavaScript 安全
跨域问题与Django解决方案:深入解析跨域原理、请求处理与CSRF防护
跨域问题与Django解决方案:深入解析跨域原理、请求处理与CSRF防护
|
4月前
|
JSON 前端开发 JavaScript
Django——Ajax请求
Django——Ajax请求
|
5月前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
5月前
|
存储 数据库 数据安全/隐私保护
基于Django的Python应用——学习笔记
基于Django的Python应用——学习笔记
|
5月前
|
开发者 Python
Django的信号机制:实现应用间的通信与响应
【4月更文挑战第15天】Django信号机制实现跨组件通信,基于订阅/发布模式,允许在事件(如模型保存、删除)发生时触发自定义函数。内置信号如`pre_save`、`post_save`,也可自定义信号。使用包括定义信号、连接处理器和触发信号。常用于模型操作监听、第三方应用集成和跨应用通信。注意避免滥用和保证处理器健壮性。信号机制提升代码可维护性和扩展性。