本文共 2327 字,大约阅读时间需要 7 分钟。
服务器接受到客户请求后,系统自动创建的对象(视图函数第一个参数)
path 请求路径 method 请求方法 GET get请求参数 POST post请求参数 FILES 上传文件 COOKIES cookie对象【会话技术】 SESSION session对象【会话技术】
name = request.GET.get("name")
name = request.POST.get('name'),
用于返回数据给客户端的,
response = HttpResponse("hello") response = HttpResponse("hello", status=200)
response = render(request, "index.html") response = render(request, "index.html", status=301)
response = redirect("/meituan/")
response = JsonResponse(stu)
HTTP 无状态 [请求一次,返回对应响应,称为一次会话] 会话技术: 实现状态保持 为什么要使用会话保持? 在一定时间段或操作中,跟踪请求者状态【服务器就知道你是谁】
类比:github HTTP每次操作都需要输入用户和密码【服务器才知道你是谁】
cookie:客户端会话技术 session:服务器会话技术(要依托cookie) token:手动sesslon
- 创建响应 response = HttpResponse() - 设置cookie response.set_cookie(key,value) - 获取cookie request.COOKIE.get(key, defaultvalue=None) - 删除cookie response.delete_cookie(key) - 设置过期时间 max_age=0 # 默认(浏览器关闭失效) max_age=None # 永不失效 max_age=num # num秒后失效 expires=timedelta(days=1) # 一天后过期
# 如果要使用session会话技术,需要在settings.py中设置 # MIDDELEWARE 添加 (默认已添加) - 设置session request.session[key] = value - 获取session request.session.get(key) - 删除session # 方式一: sessionid标识存储在cookie response = redirect("/meituan/") response.delete_cookie("sessionid") # 方式二: session服务端会话技术 del request.session["username"] # 方式三:同时删除cookie和session response = redirect(reverse("meituan:index")) request.session.flush() - 设置超时 request.session.set_expire(30)
在models.py中加入: token = models.CharField(max_length=100, null=True, default='') # token 唯一标识 # 时间戳 + 随机数 + 公司域名 + IP # 时间戳 + 域名 def generate_token(): token = str(time.time()) + str(random.random()) md5 = haslib.md5() md5.update(token.encode('utf-8')) return md5.hexdigest() user.token = generate_token() user.save() # 将token给客户端 response.set_cookie("utoken", user.token) # 删除token response.delete_cookie("utoken")
def password_sec(password): md5 = hashlib.md5() md5.update(password.encode('utf-8')) return md5.hexdigest()
转载地址:http://qwwsi.baihongyu.com/