FLask会话技术和Flask模板语言

二、FLask会话技术和Flask模板语言

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两个选一个指定,max_age优先级高
    • 获取cookie:
      request.cookies.get(key)
    • 删除cookiel
      response.delete_cookie(key)

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

2. 模板Template

  • 模板是呈现给用户的界面
    在MVT中充当T的角色,实现了MT的解耦,开发中VT有这N:N的关系,一个V可以调用任意T,一个T可以被任意V调用

  • 模板处理分为两个过程
    1.加载HTML
    2.模板渲染(模板语言)

  • 模板代码包含两个部分

    ​ 1.静态HTML
    ​ 2.动态插入的代码段(模板语法)

Jinja2

Flask中使用Jinja2模板引擎,Jinja2由Flask作者开发

  • 一个现代化设计和友好的Python模板语言
  • 模仿Django的模板引擎

优点

  • 速度快,被广泛使用
  • HTML设计和后端Python分离减少Python复杂度
  • 非常灵活,快速和安全
  • 提供了控制,继承等高级功能

模板语法

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

结构标签

# block块操作
# 父模板挖坑,子模板填坑
{% block xxx %}
{% endblock %}
extends继承
{% extends 'xxx' %}
 # 继承后保留块中的内容
{{ super() }}
# include
# 包含,将其他htm1包含进来
{% 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.indexe: 0开始的下标
# loop.revindex: 反向下标,不包括0
# loop.revindexe: 反向下标,包括0

过滤器(扩展)

语法:{{ 变量 | 过滤器 | 过滤器... }}

capitalize
lower
upper
title
trim
reverse
striptags 渲染之前,将值中标签去掉
safe
default(1)
last
first
length
sum
sort
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嘎嘎油

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

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

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

打赏作者

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

抵扣说明:

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

余额充值