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 请求


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





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