博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpResponse和HttpResquest与会话技术
阅读量:4101 次
发布时间:2019-05-25

本文共 2327 字,大约阅读时间需要 7 分钟。

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

 

 

转载地址:http://qwwsi.baihongyu.com/

你可能感兴趣的文章
为什么ConcurrentHashMap的读操作不需要加锁?
查看>>
删库别急着跑路,这几步神恢复!
查看>>
这几个错误的SQL写法,你不会还在用吧?
查看>>
一文带你掌握Lifecycle的原理
查看>>
面试BAT前先搞定这18道MySQL经典面试题(含答案解析)
查看>>
Java工程师能力评估,看看你能做对几道?
查看>>
一千行MySQL命令
查看>>
Java代码优化:使用构造函数和使用一个setter的效率差别
查看>>
【面试】我是如何在面试别人Spring事务时“套路”对方的
查看>>
Redis 21问,你接得住不?
查看>>
MySQL-分布式架构-MyCAT
查看>>
“你对薪资要求是多少?” 面试前做好这些细节,更容易被录取
查看>>
MySQL大表优化方案
查看>>
编写高性能Java代码的最佳实践
查看>>
MySQL 性能优化之骨灰级,高阶神技
查看>>
Java 性能优化:教你提高代码运行的效率
查看>>
Java 9 逆天的十大新特性
查看>>
2019 Java发展趋势报告:Java老矣,Java正年轻
查看>>
Java八大优势,这就是你选择它的理由!
查看>>
消灭 Java 代码的“坏味道”
查看>>