美文网首页
HttpResponse和HttpResquest

HttpResponse和HttpResquest

作者: fly5 | 来源:发表于2018-09-29 16:53 被阅读0次

    一、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()
    

    相关文章

      网友评论

          本文标题:HttpResponse和HttpResquest

          本文链接:https://www.haomeiwen.com/subject/yrdboftx.html