2Flask模板2控制代码块3静态文件4模板的继承
-回顾
- Flask是基于python并且依赖jinja2模板引擎的框架。
- 注册路由:客户端与Flask程序交互
- 用户在浏览器输入请求地址->request
- Flask程序接收请求,分析请求地址
- 找到对应视图函数,执行相关操作,提供响应数据
response给浏览器 - 浏览器解析给用户显示
- 模板
- 模板是一种“Python+html”的网页结构,允许在HTML文件中定义变量,定义流程控制。使用模板可以使视图函数专注于处理业务逻辑,将页面渲染交由模板控制
- 使用
- 导入 render_template
- 在视图函数中使用render_template(“模板文件”),生成模板字符串,交由浏览器解析
- 所有的模板文件必须存在名为"templates"的文件下
- 变量代码块
- 模板中使用变量,语法{{ 变量名(key) }}
- 从视图函数中获取相关的变量,传递到模板文件中。
return render_template(“模板文件”,key1=value1,key2=value2)
函数中可以传递若干键值对,其中的key名就是在模板文件中使用的变量名 - 使用locals()返回字典,包含所有局部变量
params = locals()
{
‘tup’: (‘ZX’, ‘DB’),
‘name’: ‘老Q’,
‘dic’: {‘age’: 30, ‘name’: ‘Maria’}, ‘list’: [‘保健’, ‘唱K’],
‘age’: 30
} - 过滤器
允许模板中的变量在输出之前修改成其他的值,修改显示
分类:upper 转大写字母lower 转小写字母title 首字母大写first 获取列表中第一个last 获取最后一个length 获取列表长度default() 如果变量未赋值,可采用默认值trim 去掉字符串两端的空格... 语法:{{ 变量|过滤器1|过滤器2 }}
- 控制代码块
在模板文件中书写条件语句和循环语句,使用:
{% %}- if语句
基本:{% if 条件 %}条件成立时执行,允许书写静态标签,也可以书写变量{% endif %} if-else:{% if 条件 %}条件成立时执行{% else %}条件不成立时执行{% endif %} 多重分支:{% if 条件1 %}{% elif 条件2 %}..{% else %}{% endif %}
- for语句
{% for 变量 in 可迭代元素 %}{% endfor %} 练习:完善数据,创建列表,在页面中显示"姓名:XXX,年龄:XX"[{"name":"","age":30},{"name":"","age":30},{"name":"","age":30},] 循环的内部变量:loop直接在循环内部使用,表示本次循环相关的信息常用属性:loop.index表示当前循环的次数,默认从1开始计loop.index0表示当前循环的次数,从0开始计loop.first表示是否为第一次循环,值为true表示第一次循环loop.last表示是否为最后一个循环
- if语句
- 静态文件
- 不与服务器交互的文件都是静态文件(css,js,图片,音视频等)
- 所有的静态文件都必须存储在一个名为"static"的文件夹下,Flask程序会自动查找
- 静态文件的访问:必须使用"/static/子路径"访问
- url_for(“视图函数名”)实现反向解析路由:根据指定的视图函数返回对应的地址
使用:# 根据视图函数解析对应的URLurl_for("login") # "/login"# 反向解析带参数的路由,函数中接收多个参数url_for("login",uname="Maria",upwd="123"))# "/login/Maria/123"# 自动生成静态文件的路径# "/static/css/base.css"href="{{ url_for('static',filename="css/base.css")}}">
练习:
创建新的项目,名称Blog
手动创建"templates"和"static"文件夹
将博客项目中的html文件复制到templates中,
所有的静态文件复制到static中
注册路由,访问首页和列表页
处理静态文件的访问路径(ctrl+F,ctrl+R) - 模板的继承
(与类的继承相似)
如果两个页面中大部分内容与结构都一致,可以采用模板继承
实现:
1. 父模板:
指定可以被子模板重写的内容
{% block 块名 %}
<h1>父模板</h1>
{% endblock %}
2. 子模板中继承父模板
{% extends “父模板名称”%}
3. 子模板中可以重写父模板中指定块的内容
{% block 块名 %}
<h1>子模板</h1>
{% endblock %}
2Flask模板2控制代码块3静态文件4模板的继承相关推荐
- Java中普通代码块,构造代码块,静态代码块区别
Java中普通代码块,构造代码块,静态代码块区别及代码 示例 //执行顺序:(优先级从高到低.)静态代码块>mian方法 >构造代码块>构造方法. 其中静态代码块只执行一次.构造代码 ...
- 代码和普通的java_Java中普通代码块,构造代码块,静态代码块区别及代码示例...
对静态代码块以及构造函数的执行先后顺序,一直很迷惑,看了孙伟琴老师的<java面向对象编程>又结合毕老师的java基础视频中的讲解,现用下面的这段小程序来简明扼要的叙述一下,以加深理解,与 ...
- 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...
不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...
- 构造代码块、静态代码块、构造方法的执行顺序
构造代码块.静态代码块.构造方法的执行顺序 牛客网上的一道题目: 通过查询,我写的这道题的解题步骤: package niukewang;/*** @author jxd* @date 2021/8/ ...
- Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例 2018年05月08日 08:12:48 WJN不忘初心 阅读数:34 除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静 ...
- Java代码块(代码块与静态代码块使用细节及调用顺序)
目录 1.代码块的基本介绍 2.静态代码块 类什么时候加载[重点] 创建对象实例时(new) 创建子类对象实例时,父类也会被加载 使用类的静态成员时(静态属性,静态方法) 3.代码块的使用小细节 普通 ...
- java中代码块之静态代码块和非静态代码块
一.代码块: 语法:使用{}包裹的,可以在{}中写代码. 修饰符:static 或者不修饰. static修饰的为静态代码代码块. 格式: //静态代码块,随着类的加载児执行static{System ...
- 静态代码块和静态变量执行顺序
从以下代码可以看出,静态代码块先执行与构造函数,但是静态代码块和静态变量之间的执行顺序决定于它们在代码中出现的顺序 public class Test5 {public static void mai ...
- 代码块(局部代码块、构造代码块、静态代码块)
代码块的概述 在Java中,使用{}括起来的代码被称为代码块 代码块的分类 根据位置和声明不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块 局部代码块:在方法中出现,限定变量生命周期,及早 ...
最新文章
- VC++中GlobalAlloc()、malloc()和new()函数之间区别
- 模板文件默认标准版首页模板.html未找到!,html页模板
- LeetCode Generate Parentheses
- 什么技术能改变世界?
- 关于spring boot集成MQTT的一写新人问题
- 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
- java中412是什么错_HTTP 412 错误 – 先决条件失败 (Precondition failed)
- include.cpp(main函数的cpp文件)文件中包含另一个.cpp文件的错误及原因
- net.conn read 判断数据读取完毕_单方验方|如何应对千万级工商数据抓取(一)
- bc -- The Linux Command-line Calculator
- java类和对象的基础(笔记)
- EDUCoder编程练习题解(循环)
- 关于mpvue 切换页面数据没清空
- 使用inno setup制作安装包
- 2022-2028年全球与中国硬盘驱动器存储模块行业深度分析
- autorunner
- c盘分小了如何扩大c盘,重新分区扩大c盘
- 提高电火炉使用安全,微波雷达模组感应控制,雷达感应技术方案
- 时尚圈美女撰文主攻方向
- 每天听的一首歌---奔跑