HttpResponse和HttpResquest与会话技术

一、HttpRequest对象

  • 概述
服务器接受到客户请求后,系统自动创建的对象(视图函数第一个参数)
  • 属性
    path    请求路径
    method  请求方法
    GET     get请求参数
    POST    post请求参数
    FILES   上传文件
    COOKIES     cookie对象【会话技术】
    SESSION     session对象【会话技术】
  • GET请求
    name = request.GET.get("name")
  • POST请求
    name = request.POST.get('name'),

二、HttpResponse对象

  • 概述
    用于返回数据给客户端的,
  • HttpResponse对象
    response = HttpResponse("hello")
    response = HttpResponse("hello", status=200)
  • render()
    response = render(request, "index.html")
    response = render(request, "index.html", status=301)
  • redirect()
    response = redirect("/meituan/")
  • JsonResponse()
    response = JsonResponse(stu)

三、会话技术

  • 概述
    HTTP 无状态 [请求一次,返回对应响应,称为一次会话]
    会话技术: 实现状态保持
    为什么要使用会话保持?
        在一定时间段或操作中,跟踪请求者状态【服务器就知道你是谁】

类比:github HTTP每次操作都需要输入用户和密码【服务器才知道你是谁】

  • 会话技术
    cookie:客户端会话技术
    session:服务器会话技术(要依托cookie)
    token:手动sesslon

  • cookie
    - 创建响应 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
    # 如果要使用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)
    
  • token
    在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")

  • MD5加密
    def password_sec(password):
        md5 = hashlib.md5()
        md5.update(password.encode('utf-8'))
        return md5.hexdigest()

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值