Django的基本使用(六)

一、pycharm创建项目的环境

1.create project 创建项目
2.选择 django项目
3.location中选择项目的位置
4.project interpreter — 选择一个已经存在的虚拟环境
5.more setting中
template language选择django
设置一个 application name 即可
6.配置…

二、cookie

  1. 会话技术
  2. 客户端的会话技术( 数据库保存在浏览器上)
  3. 问题导致原因: 在web应用中, 一次网络请求是从request开始, 到response结束, 跟以后的请求或者跟其他请求没有关系, 导致每次请求之间的数据没有关系 (短链接,长连接:QQ)
    解决: 在客户端保留数据(cookie)或者服务端保留数据(session)来建立关系
  4. cookie的使用

    1. 格式: response.set_cookie(key,value)
      通过response通知浏览器要保存key, value形式的cookie


    2. 如果浏览器保留了cookie, 那么每次请求该服务器的时候, 会自动的携带该cookie
      格式: request.COOKIES.get(key)

    3. 设置过期时间
      默认情况下,关闭浏览器cookie就会过期,有时候我们需要设置过期时间:
      格式: response.set_cookie(key,value,expires=值)
      expires=0 立马过期
      expires=None 永不过期
      expires= 值 单位是秒
      expires=timedelta(days=值) 表示多少天后过期 hours=值 表示多少小时后过期…

    4. 删除
      response.delete_cookie(key)

    5. cookie的应用场景:1.保存账号,密码 2.京东的购物车 3.保留用户的浏览信息 …

**cookie中文问题: response.set_cookie(key,json.dumps(value)) 即可

三、session

1.会话技术
2.服务端的会话技术
3.需要客户端的支持才可以
4.使用:


  1. 格式: request.session[key] = value

    注意:在django中存储了一个session后,django会 自动 的生成session key,并将session key与 数据自动的存储到 django_session表中去,数据会自动的用base64编码,
    并会 自动 的让浏览器的cookie存储 sessionid(就是sessison key)


  2. 格式: value = request.session.get(key)
    注意: 在django中,会 自动 的将cookie中的sessionid拿出来跟数据库中的session key匹配,匹配成功后既可以获取值

  3. 清除

    1. 清除对应的cookie
    2. del request.session
    3. request.session.flush() 会清楚对应的cookie及session

5.应用: 用户登陆认证

四、案例: 登陆,注册功能

1.token 就是自定义session ,token是唯一的

  1. 注册

    1. 设计数据模型
      name,password,age,token
    2. 注册界面
    3. 注册功能
      1. 获取输入的信息
      2. 创建user对象
      3. 设置对应的属性
        1. 密码需要md5处理
        2. token需要是一个唯一的字符串标识
      4. 保存
  2. 登陆

    1. 登陆界面,登陆功能一同处理(根据method来判断)
    2. 登陆功能
      1. 获取输入的账号,密码
      2. 根据账号来筛选用户
        1. 找到用户user

          1. 判断找到的user的密码与输入的密码(需要md5处理)是否一致
            1. 密码正确
              保存token到客户端/保存session
              跳转到首页
            2. 密码不正确—提示
              再次登陆
        2. 没找到—提示
          再次登陆

  3. 首页

    1. 使用token,或者session来获取用户信息
    2. 是否找到了对应的用户
      1. 找到了
        用户信息,登陆成功的信息
      2. 没找到
        登陆,注册
  4. 单点登录
    问题: 一个账户可能在多个地方同时登陆
    解决: 新登陆的时候,跟换一个新的token
    如:

登录成功之后生成一个新的token,生成新的之后,之前登陆的就失效了, 可以实现单点登录

user.u_token = createToken()
	user.save()

五、MD5—信息摘要–加密

md5可以将任何一个二进制的数据通过数学算法,转换成一个一定长度(128位)的二进制数据
特点:

  1. 结果是唯一的,不可能重复
  2. 不可逆

作用:

  1. 通常用来加密密码
  2. 通常用来验证一个数据的完整性

1.使用md5处理

# 创建一个md5对象
MD5 = hashlib.md5()
# 将一个二进制数据进行md5处理, 生成一个128位的二进制数据
# 4位的二进制是一位的十六进制
MD5.update(password.encode("utf-8"))
# 将二进制结果转换成32位十六进制的结果
password = MD5.hexdigest()
print(password)

六、生成一个唯一性的字符串:

1.自己生成: # 唯一的字符串规则: 时间戳 + 随机数(很多位) + 公司的域名
mytoken = str(time.time()) + str(random.randint(100000,999999)) + "www.baidu.com"
2.也可以使用模块:uuid
    # 生成一个唯一的uuid
    myuuid = uuid.uuid4()
    print(myuuid)

七、编码/解码、加密/解密

编码/解码

编码: 将一个数据按照码表转换成二进制的形式 encode
解码: 解码将二进制的数据转换成可视形式的数据 decode

解码的时候码表必须与编码的码表一致

常见的编码格式:
UTF-8,gbk,base64

加密/解密

1.DES 对称加密 ----- 加密的密钥与解密的密钥是同一个密钥
2.RSA 非对称加密 ----- 加密的密钥(公钥)与解密的密钥(私钥) 不是 同一个密钥
3.md5/sha 信息摘要 ----- 可以将任何一个二进制的数据通过数学算法,转换成一个一定长度的二进制数据,而该数据不可逆且唯一

猜你喜欢

转载自blog.csdn.net/lixinghua666/article/details/82818884