• flask中的endpoint、自定义转化器、与djnago中session区别、利用装饰器实现登录认证


    flask路由中的endpoint 与自定义转化器

    '''
    endpoint主要用于 反向解析,
    	例如:login函数中配的路由是/login,其中endpoint='lg'
    	则在其他函数,可以用 url=url_for('lg'),redirect(url)直接访问login函数
    '''
    
    '''
    自定义转化器,可以用来动态更新url_for 的跳转路由
    其中 to_python主要是给后端的,可以对路由参数做修改
    to_url是给前端url的,可以更新指定的url
    '''
    

    flask与django中关于session

    #区别
    登录函数保存session代码:
    flask:
         secret_key = 'dksafjdksa' #随便写值
    	 session['user_info'] = user
    django:
         request.session['user_info'] = username
    
    '''
    django中,session保存在服务端的数据库中,数据库中保存请求用户的所有数据,服务端数据中{'随机字符串':加密后的客户相关信息},请求完成后,把随机字符串作为值,返回给客户端,保存在客户端的cookie中,键为:sessionid,值为:服务端返回的随机字符串;即{'sessionid':'随机字符串'}
    
    Flask中,服务端什么都不存,用户第一次请求时,在内存中生成一个空字典,将这个空字典加密(利用secret_key)后,返回给客户端,保存在客户端的cookie中,键为’session',值为:加密后的字典下次访问时,读取客户端cookie中key为session对应的值然后进行解密(如果不能按之前的的加密方式对应个解密方式解密,即认为第一次请求,重新生成空字典),解密成功后,可以对字典进行操作,保存新数据在字典中,请求完成后,会重新加密这个字典,返回个客户端保存
    '''
    
    
    
    
    
    '''
    设置:session['username'] = 'xxx'
    #在django中发什么三件事,1,生成一个随机的字符串 2 往数据库存 3 写入cookie返回浏览器
    #在flask中他没有数据库,但session是怎样实现的?
        # 生成一个密钥写入这个cookie,然后下次请求的时候,通过这个cookie解密,然后赋值给session
        #我们通过app.session_interface来查看
      
    
    删除:session.pop('username', None)
    '''
    
    
    
    #session源码执行流程
    '''
    -save_seesion
        -响应的时候,把session中的值加密序列化放大到了cookie中,返回到浏览器中
    -open_session
        -请求来了,从cookie中取出值,反解,生成session对象,以后再视图函数中直接用sessoin就可以了。
    '''
    

    flask实现登录认证(利用装饰器)

    '''
    思路和django类似,判断是否能取到session,取不到就进入登录函数
    '''
    
    

    源码见michaelben

  • 相关阅读:
    Mysql 系列 | 事务隔离
    Mysql 系列 | 索引(优化器索引选择异常处理)
    Mysql 系列 | count(*)
    K8S入门篇资源调度
    K8S入门篇配置管理
    k8s入门篇资源管理
    k8s入门篇持久化存储管理
    操作crontab
    go Printf 语句的占位符 Format
    go中的 4种 for循环
  • 原文地址:https://www.cnblogs.com/michealjy/p/12043763.html
Copyright © 2020-2023  润新知