Django从0到1 --- 请求及响应

简介: 笔记

请求及响应


1.png

Django中的请求

请求在Django中实则就是 视图函数的第一个参数request,即 HttpRequest对象

Django接收到http协议的请求后,会根据请求数据报文创建HttpRequest对象

HttpRequest对象 通过属性描述了请求的所有相关信息

request.xxx


path_info: URL字符串


method :字符串,表示HTTP请求方法,常用值:'GET'、'POST'


GET:QueryDict查询字典的对象,包含GET请求方式的所有数据


POST:QueryDict查询字典的对象,包含POST请求方式的所有数据


FILES:类似于字典的对象,包含所有的上传文件信息


COOKIES:python字典,包含所有的cookies,键和值都为字符串


session:类似于字典的对象,表示当前的会话


body:字符串,请求体的内容(POST或PUT)


scheme:请求协议('http/https')


request.get_full_path():请求的完整路径


request.META:请求中的元数据(消息头)


request.META['REMOTE_ADDR']:客户端的IP地址

#http://127.0.0.1:8000/test_request?a=1&b=1
print('!path info is',request.path_info)
print('!method is ',request.method)
print('!querystring is',request.GET)
print('!full path is',request.get_full_path())
!path info is /test_request
!method is  GET
!querystring is <QueryDict: {'a': ['1'], 'b': ['1']}>
!full path is /test_request?a=1&b=1


Django中的响应

响应状态码

  • 200 - 请求成功
  • 301 - 永久重定向-资源(网页等)被永久转移
  • 302 - 临时重定向
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误2.png


Django中的响应对象

构造函数格式:


HttpResponse(content=响应体,content_type=响应体数据类型(默认为html),status=状态码(默认为200))


作用:


向客户端浏览器返回响应,同时携带响应体内容


常用的Content-Type:


'text/html' 默认,html文件

'text/plain' 纯文本

'text/css' css文件

'text/javascript' js文件

'multipart/form-data' 文件提交

'application/json' json传输

'application/xml' xml文件

HttpResponse子类

from django.http import HttpResponsexxx


3.png

例:

def test_request(request):
    print('!path info is',request.path_info)
    print('!method is ',request.method)
    print('!querystring is',request.GET)
    print('!full path is',request.get_full_path())
    return HttpResponseRedirect('/page/1')


当访问 http://localhost/test_request 时,会跳转到 http://localhost/page/1


GET和POST请求

无论是GET还是POST,通以都由视图函数接受请求,通过判断 request.method 区分具体的请求动作

  • 样例
if request.method == 'GET':
    处理GET请求时的业务逻辑
elif request.method == 'POST':
    处理POST请求的业务逻辑
else:
    其他请求业务逻辑


GET处理

GET请求动作,一般用于向服务器获取数据


能够产生GET请求的场景


浏览器地址栏中输入URL,回车后

<a href="地址?参数=值&参数=值">

from表单中的method为GET

方法


request.GET['参数名'] .GET是一个 QueryDict


request.GET.get('参数名','默认值') 返回某个参数的值,若此参数不存在 则返回一个默认值


request.GET.getlist('参数名') 获取某个参数的所有值 返回值是一个列表4.png5.png


POST处理

POST 一般用于向服务器提交大量/隐私数据

客户端通过**表单(form)**等POST请求将数据传递给服务器端

6.png


服务器端接收参数:


通过 request.method 来判断请求是否是 POST


使用POST方式接收客户端数据


7.png


取消CSRF验证,否则Django会拒绝客户端发来的POST请求,报错403


settings.py 中 取消CSRF验证


8.png


Django处理 GET 请求


✔️查询字符串 - 少量数据传递(切记不能传输敏感数据)


Django处理 POST 请求


✔️ 专用于浏览器提交数据





目录
相关文章
|
8月前
|
Python
Django模板加载与响应2
Django模板加载与响应2
41 0
|
4天前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
101 7
|
4天前
|
开发者 Python
Django的信号机制:实现应用间的通信与响应
【4月更文挑战第15天】Django信号机制实现跨组件通信,基于订阅/发布模式,允许在事件(如模型保存、删除)发生时触发自定义函数。内置信号如`pre_save`、`post_save`,也可自定义信号。使用包括定义信号、连接处理器和触发信号。常用于模型操作监听、第三方应用集成和跨应用通信。注意避免滥用和保证处理器健壮性。信号机制提升代码可维护性和扩展性。
|
4天前
|
JSON 前端开发 JavaScript
Django实践-04静态资源和Ajax请求
Django实践-04静态资源和Ajax请求
Django实践-04静态资源和Ajax请求
|
5月前
|
JavaScript Python
django和vue 请求403 FORBIDDEN怎么办
在请求头里,添加X-CSRFToken, 取自浏览器里的cookie 再附上取cookie的源码
38 0
|
6月前
|
数据采集 存储 数据挖掘
Django爬虫:如何处理超过重试次数的请求以保障数据完整性
Django爬虫:如何处理超过重试次数的请求以保障数据完整性
|
8月前
|
开发者 索引 Python
Django模板加载与响应1
Django模板加载与响应1
44 0
|
8月前
|
安全 中间件 API
详解Django请求与响应:深入理解Web Http交互的核心机制
详解Django请求与响应:深入理解Web Http交互的核心机制
80 0
|
9月前
|
安全 中间件 数据安全/隐私保护
Django中防范CSRF跨站点请求伪造攻击
Django中防范CSRF跨站点请求伪造攻击
|
9月前
|
JSON 前端开发 JavaScript
[Python]Django请求与响应(二)
[Python]Django请求与响应(二)