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
...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode】链表分割

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 方法1. 不用哨兵位方法2. 用哨兵位 点击查看题目 思路: 将链表分为2个链表list1和list2,…

Cookie、Session和JWT

摘要:Cookie、Session和JWT都不是什么新的技术了,最近用到了就比较和总结下。 我们知道http协议是无状态的,用户登录后如何验证和保存用户状态呢?下面来介绍 1. 使用Cookie和Session验证登录状态 session是保存在服务端的一种数…

【中科院计算所】WSDM 2024冠军方案:基于大模型进行多文档问答

作者:李一鸣 张兆 中科院计算所 会话式多文档问答旨在根据检索到的文档以及上下文对话来回答特定问题。 在本文中,我们介绍了 WSDM Cup 2024 中“对话式多文档 QA”挑战赛的获胜方法,该方法利用了大型语言模型 (LLM) 卓越的自然语言理解和生…

项目解决方案: 实时视频拼接方案介绍

目 录 1、实时视频拼接概述 2、适用场景 3、系统介绍 3.1拼接形式 3.1.1横向拼接 3.1.2纵向拼接 3.2前端选择 3.2.1前端类型 3.2.2推荐配置 3.3后端选择 3.3.1录像回放 3.3.2客户端展示 4、拼接方案介绍 4.1基于4K摄像机的拼接方案 4.1.1系统架构…

安秉源代码加密,不仅可以正常加密,对编译调试无任何影响

源代码防泄密对于很多企业来讲都在使用,特别是在广东一些做智能制造的企业,这些企业在很早就意识到源代码防泄密的重要性,很多企业采用加密的方式对企业的源代码进行加密,也采用了相对应的加密软件,但是在使用一些加密…

Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析

3. SpringBoot原理 SpringBoot使我们能够集中精力地去关注业务功能的开发,而不用过多地关注框架本身的配置使用。而我们前面所讲解的都是面向应用层面的技术,接下来我们开始学习SpringBoot的原理,这部分内容偏向于底层的原理分析。 在剖析Sp…

P沟道与N沟道MOSFET的基本概念

N沟道与P沟道MOSFET基本原理与区别 学习MOSFET时的简单笔记作为个人总结,仅供学习参考,实际电路设计请直接略过!!! 文章目录 N沟道与P沟道MOSFET基本原理与区别前言一、MOSFET ?二、N沟道MOS管原理三、P沟…

老卫带你学---leetcode刷题(130. 被围绕的区域)

130. 被围绕的区域 问题 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 1: 输入:board [[“X”,“X”,“X”,“X”]…

mitmproxy安装与配置

文章目录 一、mitmproxy的安装二、运行mitmproxy1、配置客户端代理方式一,设置全局代理方式二,设置浏览器代理 2、客户端安装mitmproxy提供的CA证书手工安装步骤:自动安装步骤: mitmproxy是一个免费的开源交互式的HTTPS代理工具。…

放着奥威-用友BI方案不用?糊涂!

放着奥威-用友BI方案不用,自己在那死磕数据可视化报表开发、数据分析报表开发,白白投了大量的人力物力进去,还得不到好效果,比百忙一场还要亏。 奥威-用友BI方案究竟有多优秀? 1、分析快,报表制作快 半个…

嵌入式驱动学习第一周——git的使用

前言 本文主要介绍git的使用,包括介绍git,gitee,以及使用gitee创建仓库并托管代码 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏&#xf…

1.1 编程环境的安装

汇编语言 汇编语言环境部署 第二个运行程序直接双击安装一直下一步即可MASM文件复制到D盘路径下找到dosbox安装路径:C:\Program Files (x86)\DOSBox-0.74找到该文件双击打开它,修改一下窗口大小 把这两行改成如下所示 运行dos,黑框中输入mou…

Dockerfile(4) - RUN 指令详解

RUN 运行命令 shell 形式 命令在 shell 中运行Linux 上默认为 /bin/sh -cWindows 上 cmd /S /C RUN <command> exec 形式 RUN ["executable", "param1", "param2"] 必须双引号&#xff0c;不能是单引号 两种写法的实际栗子 RUN …

MYSQL02高级_目录结构、默认数据库、表文件、系统独立表空间

文章目录 ①. MySQL目录结构②. 查看默认数据库③. MYSQL5.7和8表文件③. 系统、独立表空间 ①. MySQL目录结构 ①. 如何查看关联mysql目录 [rootmysql8 ~]# find / -name mysql /var/lib/mysql /var/lib/mysql/mysql /etc/selinux/targeted/tmp/modules/100/mysql /etc/seli…

客服办公神器·带你实现快捷回复自由

节后很多做客服的小伙伴都来找我说回复挺力不从心的&#xff0c;让我支点招。因为每个小伙伴遇到的顾客问题和回复情况都各不相同&#xff0c;我还是建议大家下载一个利于提高自己办公效率的软件&#xff0c;像我一直在用的这个“客服宝快捷回复软件”真是客服打工人之光&#…

ROS2----运行helloworld、集成开发环境的搭建

前言&#xff1a;ROS2已经出来了&#xff0c;ROS1会被逐渐淘汰&#xff0c;大家尽量不要学ROS1了&#xff01;&#xff01; 文章目录 一、运行helloworld1.创建工作空间2.创建功能包3.源文件和配置文件4.编译与运行5.源码编写下的编译与运行6.运行优化 二、集成开发环境的搭建…

企业有了ERP,为什么还要上BI?

在我们以往和企业的沟通过程中&#xff0c;我们发现还是有相当多的一部分企业对于商业智能 BI 了解不多&#xff0c;或者对商业智能 BI 的理解仅停留在花花绿绿的可视化页面上&#xff0c;要么就是提出以下类似问题&#xff1a; 财务部门&#xff1a;BI 的财务分析指标也就是三…

谢霆锋王菲甜蜜合体,对视瞬间燃爆全网。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 天后王菲与谢霆锋恋情备受瞩目&#xff0c;虽未婚却甜蜜如初。…

【力扣hot100】刷题笔记Day15

前言 今天要刷的是图论&#xff0c;还没学过&#xff0c;先看看《代码随想录》这部分的基础 深搜DFS理论基础 深搜三部曲 确认递归函数、参数确认终止条件处理目前搜索节点出发的路径 代码框架 void dfs(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本节点…

17.题目:编号3766 无尽的石头

题目&#xff1a; ###本题主要考察模拟 #include<bits/stdc.h> using namespace std; int sum(int x){int result0;while(x){resultx%10;x/10;}return result; } int main(){int t;cin>>t;while(t--){int n;cin>>n;int buf1;int ans0;for(int i1;i<100…