HttpResponse对象 概述: 作用:给浏览器返回数据 HttpRequest对象是由Django创建的,HttpResponse对象是由程序员创建 用法: 不用模板,直接返回数据 语句示例:return HttpResponse("Sunck is a good man") 调用模板 使用render方法 原型:render(request, templateName[, context]) 作用:结合数据和模板,返回一个完整的HTML页面 参数: request:请求体对象 templateName:模板路径 context:传递给需要渲染在模板上的数据 属性 content:表示返回内容 charset:编码格式 status_code:响应状态码 200 304 404 400 content-type:指定输出的MIME类型 方法 init:使用页面内容实例化HttpResponse对象 write(content):以文件的形式写入 flush():以文件的形式输出缓冲区 set_cookie(key, value, maxAge=None, exprise=None) delete_cookie(key): 删除cookie 如果删除一个不存在的cookie,就当什么都没发生 子类HttpResponseRedirect 功能:重定向,服务器端的跳转 简写 redirect(to) to推荐使用反向解析 示例: from django.http import HttpResponseRedirect from django.shortcuts import redirect def redirect1(request): # return HttpResponseRedirect('/redirect2') return redirect('/redirect2') def redirect2(request): return HttpResponse("我是重定向后的视图") 子类JsonResponse 返回Json数据,一般用于异步请求 __init__(self.data) data 字典 注意:Content-type类型为application/json 状态保持 http协议是无状态的,每次请求都是一次新的请求,它不记得之前的请求。 客户端与服务器的一次通信就是一次会话 实现状态的保持,在客户端或服务端存储有关会话的数据 存储的方式 cookie:所有数据存储在客户端,不要存储敏感的数据 session:所有的数据存储在服务端,在客户端用cookie存储session_id 状态保持的目的: 在一段时间内跟踪请求者的状态,可以实现跨页面访问当前的请求者的数据 注意:不同的请求者之间不会共享这个数据,与请求者一一对应 启用session:project\project\settings.py INSTALLED_APPS 'django.contrib.sessions', MIDDLEWARE 'django.contrib.sessions.middleware.SessionMiddleware', 使用session 启用session后,每个httpRequest对象都有一个session属性 get[key, default=None] 根据键获取session值 clear() 清空所有会话 flush() 删除当前会话并删除会话的cookie 示例: # session def main(request): # 取session username = request.session.get('name', '游客') print(username) return render(request, 'myApp/main.html', {'username': username}) def login(request): return render(request, 'myApp/login.html') def showmain(request): print("*****************") username = request.POST.get('username') # 存储session request.session['name'] = username return redirect('/main/') from django.contrib.auth import logout def quit(request): # 清除session logout(request) # 方法1,推荐 # request.session.clear() # 方法2 request.session.flush() # 方法3 return redirect('/main/') 设置session过期时间 set_expiry(value) request.session.set_expiry(10) 设置为10秒后过期 如果不设置,2个星期后过期 value设置为0代表关闭浏览器时过期 value设置为None代表设置永不过期,不推荐