Flask会话技术和Flask模板语言--02

1. 概述

  1.  会话技术Cookie和Session

  2.  基于Cookie和Session的登录功能

  3.  模板语法

2. 会话技术

2.1 Cookie

客户端的会话技术
cookie本身由浏览器保存,通过Response将cookie写到浏览器上,下一次访问,浏览器会根据不同的规则携带cookie过来
​
特点:
    - 客户端会话技术,浏览器的会话技术
    - 数据全都是存储在客户端中
    - 存储使用的键值对结构进行的存储
    - 特性
        - 支持过期时间
        - 默认会自动携带本网站的所有cookie
        - 根据域名进行cookie存储
        - 不能跨域名
        - 不能跨浏览器
    - Cookie是通过服务器创建的Response来创建的
 
 设置cookie:
    response.set_cookie(key,value[,max_age=None,exprise=None])
        max_age: 整数,指定cookie过期时间
        expries: 整数,指定过期时间,可以指定一个具体日期时间
        max_age和expries两个选一个指定
​
 获取cookie:
    request.cookies.get(key)
​
 删除cookie
    response.delete_cookie(key)

2.2 session

服务器端会话技术,依赖于cookie
特点:
    - 服务端的会话技术
    - 所有数据存储在服务器中
    - 默认存储在内存中
    - 存储结构也是key-value形势,键值对
    - session 是离不开cookie的
​
​
Flask中的session是全局对象
(之前的request也是Flask的一个全局对象)
​
常用操作:
    设置session
        session['key'] = 'value' 
        
    获取session
        session.get(key,default=None) 根据键获取会话的值
        
    删除session
        session.pop(key) 删除某一值  
        session.clear()   清除所有
​
cookie和session的区别:
cookie: 
    1. 在浏览器存储
    2. 安全性较低
    3. 可以减轻服务器压力
session:
    1. 在服务器端存储
    2. 安全性高
    3. 对服务器要求较高
    4. 依赖cookie

3. 模板Template

3.1 模板解释

模板是呈现给用户的界面
​
在MVT中充当T的角色,实现了MT的解耦,开发中VT有这N:M的关系,一个V可以调用任意T,一个T可以被任意V调用
模板处理分为两个过程
  1. 加载HTML
  2. 模板渲染(模板语言)
​
模板代码包含两个部分
  1. 静态HTML
  2. 动态插入的代码段(模板语法)

3.2 Jinja2

Flask中使用Jinja2模板引擎
Jinja2由Flask作者开发
  一个现代化设计和友好的Python模板语言
  模仿Django的模板引擎
​
优点
  速度快,被广泛使用
  HTML设计和后端Python分离
  减少Python复杂度
  非常灵活,快速和安全
  提供了控制,继承等高级功能

3.3 模板语法

3.31 基础语法

模板语法主要分为两种
  变量  
  标签 
​
模板中的变量  {{ var }}
  视图传递给模板的数据
  前面定义出来的数据
  变量不存在,默认忽略
​
模板中的标签  {% tag  %}
  控制逻辑
  使用外部表达式
  创建变量
  宏定义

3.32 高级语法

结构标签

block 块操作
  父模板挖坑,子模板填坑 
  {% block xxx %}
  {% endblock %}
​
extends 继承
  {% extends 'xxx' %}
  
  继承后保留块中的内容
  {{ super() }}  
​
include
  包含,将其他html包含进来
  {% include 'xxx' %}
​
marco 【了解】
  宏定义,可以在模板中定义函数,在其它地方调用
  {% macro hello(name) %}
      {{ name }}
  {% endmacro %}
  
宏定义可导入
  {% from 'xxx' import xxx %}

循环

for循环
  {% for item in cols %}
    AA  
  {% else %}
    BB
  {% endfor %}
​
可以使用和Python一样的for…else
也可以获取循环信息 loop
loop.first: 判断是否是第一个元素
loop.last: 判断是否是最后一个元素
loop.index: 1开始的下标   
loop.index0: 0开始的下标
loop.revindex: 反向下标,不包括0
loop.revindex0: 反向下标,包括0

过滤器(扩展)

语法  
    {{ 变量|过滤器|过滤器… }}
capitalize
lower
upper
title
trim
reverse
striptags 渲染之前,将值中标签去掉
​
safe
default(1)
last
first
length
sum
sort
...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiayi_init_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值