views的作用
客户端的请求通过路由url可以被传递到指定的视图函数view,进行对应的业务处理,当处理完业务,views将回复一个响应通过url返回给客户端,所以说views是后端开发专门处理业务的模块。
我们接下来就讲一讲views的请求与响应
请求request
request对象会默认注入到视图函数中,最为第一个参数
request的常见的属性
-
request.GET : 获取get请求的提交的数据
-
request.POST:获取post提交的数据
- request.GET和request.POST都会返回一个QueryDict对象
- querydict对象的常见的方法
- get(key, default=None): 获取指定的键对应的值,返回字符串,如果键不存在,default 设置默认值
- getlist(key) : 获取指定的键对应的值,返回一个列表
- dict() : 将QueryDict对象转成 字典
-
request.FILES : 获取上传的资源
- get(key) : 获取上传的文件,返回一个InMemoryUploadedFile文件对象
-
InMemoryUploadedFile文件对象中,常用的属性和方法
-
name : 获取文件的名称
-
size : 获取文件的大小
-
content_type : 获取文件的真实类型
-
chunks() : 以块的方式读取文件,是一个生成器,适合读取大的文件,防止内存溢出
-
read() : 以流的方式读取文件、适合小文件的读取
-
- get(key) : 获取上传的文件,返回一个InMemoryUploadedFile文件对象
-
request.path : 获取请求地址
-
request.method: 请求的方式,(GET, POST)
-
request.content_type : 请求的类型
-
request.headers : 获取请求的头信息
-
request.is_ajax() : 是否是异步请求
-
request.user : 代表当前登录的用户
-
request.COOKIES : 获取浏览器中存储的 cookie
-
request.session : 获取session
浏览器向服务器传递参数的方式
- GET 传参, 特点: 以 ? 分割, 通过 键=值的方式 ,多个参数用 & 分割
- POST参数, 特点: 表单提交数据
- 参数路由
服务器向模板传递参数的方式
- render(request, template_name, context)
响应response
视图函数 必须返回 HttpResponse 对象
Django响应方式
- HttpResponse : 响应一个简单的字符串 或者 流数据
- render : 跳转到 模板(html)页面中
- redirect : 重定向,跳转到 一个 路由地址中
- FileResponse : 实现文件下载的响应对象
- JsonResponse : 返回 json个数的数据的 响应对象
HttpResponse
常见的参数如下
- content : 响应的内容,可以是一个字符串,也可以是一个 流
- content_type : 响应的类型,默认值是 text/html;charset=utf-8
- status : 响应的状态码, 默认值是 200
- 200 : ok 正常
- 201 : Created 新增数据的时候
- 204 : no content 删除数据的时候
- 301 : 永久性重定向
- 302 : 临时重定向
- 304 : 代表资源未修改、
- 400 : Bad Request ,请求参数不正确
- 403 : 禁止访问,代表 访问的资源没有权限
- 404 : Not found 代表 请求的资源未找到
- 405 : 请求方式不正确
- 500 : 服务器内部程序错误 (编写的代码出错了)
ps:其他响应码的含义
- charset : 设置响应的编码
render 跳转模板
导入 from django.shortcuts import render
render(request, template_name, context=None, content_type=None, status=None)
- request: 请求对象,每一个视图函数都用
- template_name : 模板的名称,html网页的名字
- context : 向模板传递的数据 ,格式是一个字典
- content_type : 响应的类型,默认值是 text/html;charset=utf-8
- status : 响应的状态码,默认是200
django 模板的配置
- 在项目的根下, 新建一个 templates 目录
- 右键 templates --> make directory as -> template folder (不是必须的)
- 在
settings.py
中,进行模板的配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
redirect 重定向
from django.shortcuts import redirect
redirect(to, *args, permanent=False, **kwargs)
- to : 跳转到某一个 请求地址中(路由)
- permanent : 默认是 False, 代表 临时重定向,状态码是 302, 如果设置为 true, 代表采用 永久型重定向,状态301
JsonResponse
JsonResponse(data, safe=True)
- data : 代表响应的 JSON数据、支持的数据是 列表 和 字典 ,默认只能传 字典
safe = True : 代表 data 传的是 字典
safe = False : 代表 data 传的是 非字典