电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Flask模板语法与继承

39页
  • 卖家[上传人]:金****
  • 文档编号:168840535
  • 上传时间:2021-02-21
  • 文档格式:PDF
  • 文档大小:5.37MB
  • / 39 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、2020/11/10慕课网-学习资料预览 Flask模板 Flask模板 什么是模板? 为什么学习它? 它有哪些内容? 2020/11/10慕课网-学习资料预览 什么是模板 思考:怎样在浏览器展示文件HTML 理解渲染机制 思考:没有模板渲染函数怎样在浏览器展示文件HTML 1. html从磁盘读取字符串 2. 将满足特定规则的内容进行替换 3. 发送给浏览器展示 2020/11/10慕课网-学习资料预览 什么是模板 模板其实是一个包含响应文本的其中用变文件,占位符( 量 表示动态部分 告诉模板引擎其具体的值需要从使用), 的数据中获取 使用真实值替换变量,再返回最终得到的字符串 这个过 程称为渲染 为什么学模板 思考:刚刚的实现逻辑有什么缺陷? 1.:缺陷一:所有的业务逻辑代码都在 py文件中 2:缺陷二:公共的业务变更需要修改多处代码 2020/11/10慕课网-学习资料预览 为什么学模板 思考:刚刚的实现逻辑有什么缺陷? 不好维护,太难了TM 章节介绍 模板引擎介绍 模板中变量的使用 模板语法标签 模板中的宏 模板的继承与包含 消息闪现 模板语法过滤器 模板语法全局函数 2020

      2、/11/10慕课网-学习资料预览 模板介绍 模板引擎 Flask Jinja2 使用作为默认模板引擎 安装 PIPpip install Jinja2安装: 源码安装:python setup.py install 2020/11/10慕课网-学习资料预览 默认配置 template_folder=templates模板的默认目录 render_template_string() 字符串自动转义 % autoescape % 手动设置是否转义 全局函数和辅助对象增强模板的功能 render_template() (x)html自动转义 什么是转义 把有特殊意义的字符显示出来 html标签中的&;lt; 2020/11/10慕课网-学习资料预览 特殊字符转义对照表 全局对象 configFlask的配置信息 request请求对象 session会话对象 g:g.user请求相关的全局变量(如) 2020/11/10慕课网-学习资料预览 全局函数 url_for() get_flashed_messages() URL解析函数(如:静态文件地址解析、链接跳转地址解析) 会话消息 上下文处

      3、理器 在模板的上下文中添加新的内容 app.context_processor def inject_user(): return dict(user=g.user) 内容可以是变量,也可以是函数 2020/11/10慕课网-学习资料预览 模板中变量的使用 回顾:渲染机制 模板引擎怎样在浏览器展示HTML 发送给浏览器展示 从磁盘读取html字符串 将满足特定规则的内容进行替换 2020/11/10慕课网-学习资料预览 模板中变量的使用 思考:这些类型的数据怎么渲染?dict/list/tuple 模板中变量的使用 语法 value 2020/11/10慕课网-学习资料预览 模板中变量的使用 dict类型数据的渲染 object.attributeobjectattribute或 list/tuple类型数据的渲染 list/tupledict嵌套复杂类型数据的渲染 模板中变量的使用 思考:长度为的对象如何渲染?100list 学习使用模板标签 2020/11/10慕课网-学习资料预览 模板标签 模板语法 模板标签 过滤器 模板全局函数 2020/11/10慕课网-学习资料预览 模板标

      4、签 什么是模板标签 设想:我们能在模板中写的逻辑代码吗?python 1:条件判断(ifelse) 2:循环(for continue/break) 3name=,age=20:赋值(张三) 2020/11/10慕课网-学习资料预览 模板标签 标签中可包含表达式,如: 条件控制if 语法 1% tag %: 2% tag %: 内容 % endtag % 模板标签 条件表达式 % if condition_a % 满足了 条件A % elif condition_b % 满足了 条件B % else % 都不满足 % endif % 2020/11/10慕课网-学习资料预览 模板标签 ifis标签中的 判断 % if value is defined % . % endif % 模板标签 内置的判断条件 defined/undefined变量是否已经定义 noneNone变量是否为 number/string/数字 字符串判断 even/odd奇偶判断 upper/lower大小写判断 2020/11/10慕课网-学习资料预览 模板标签 if标签中的其他逻辑控制 and, or = ,

      5、 != , = , = in, not in 模板标签 for循环 ul % for key, value in data. items() % key : value % else % 暂无数据 % endfor % 2020/11/10慕课网-学习资料预览 模板标签 for循环体内的变量 变量描述 loop.index当前循环迭代的次数(从 1 开始) loop.index 0 当前循环迭代的次数(从 0 开始) loop.revind ex 到循环结束需要迭代的次数(从 1 开始) loop.revind ex0 到循环结束需要迭代的次数(从 0 开始) 模板标签 变量描述 loop.first如果是第一次迭代,为 True loop.last如果是最后一次迭代,为 True loop.length 序列的长度 loop.cycle在一串序列间期取值的辅助函数 for循环体内的变量 2020/11/10慕课网-学习资料预览 模板标签 思考:如果要在循环中使用forcontinue/break怎么办? jinja_env = Environment(extensions=jinja

      6、2.ext.loopcontrols) % for user in users % %-loop.index is even % continue % endifif % . % endfor % 模板标签 添加注释 不会显示在浏览器的中HTML 去除HTML中多余的空白 在块的开始或结束放置一个减号(),-不能有空格 % for item in seq -% item %- endfor % # 注释内容 # 2020/11/10慕课网-学习资料预览 模板标签 设置变量,赋值操作 先设置,后使用,可以通过import导入 % set key, value = (1, 2) % 使用代码块,实现块级作用域with % with % % set value = 42 % value 只在代码块中有效 % endwith % 转义显示 思考:如下内容如何显示? % % % for key, value in data.items % key : value % endfor % 2020/11/10慕课网-学习资料预览 转义显示 方式一:视为字符串 % % % raw % % for ke

      7、y, value in data.items % key : value % endfor % % endraw % 方式二:使用标签raw 过滤器 2020/11/10慕课网-学习资料预览 什么是过滤器 思考:下面的场景如何实现? 19980.350 $19,980.35 13532020000135*0000 什么是过滤器 过滤器:修改变量(如:格式化显示) 用管道符号()分割| name|striptags 可以链式调用 可以用圆括号传递可选参数 name|striptags|title list|join(, ) 2020/11/10慕课网-学习资料预览 过滤器的使用 方式一:用管道符号( | ) 方式二:使用标签 % filter upper % This text becomes uppercase % endfilter % value|safe 内置的过滤器 求绝对值 默认值显示 default(value, default_value=, boolean=False) value|default() 默认值 html转义 value|abs value | escap

      8、e value | 或e value|d) (默认值 2020/11/10慕课网-学习资料预览 内置的过滤器 富文本内容转义显示 倒序显示 value|reverse value|safe 自定义过滤器 2020/11/10慕课网-学习资料预览 自定义过滤器 方式一:使用装饰器注册 方式二:调用函数注册 def reverse_filter(s): return s:-1 app.jinja_env.filtersreverse = reverse_filter app.template_filter(reverse) def reverse_filter(s): return s:-1 模板全局函数 2020/11/10慕课网-学习资料预览 模板全局函数 回顾:函数的好处range 思考:在模板中如何实现同样的效果? 模板全局函数 全局函数可在模板中直接使用 示例: ul % for i in range(10) % i % endfor % 2020/11/10慕课网-学习资料预览 模板全局函数 range(start, stop, step) dict(*items) cycle

      9、r(*items)css可用于类名的循环 joiner(sep=, )可用于字符串拼接 模板全局函数 url_for() URL解析函数(如:静态文件地址解析、链接跳转地址解析) 2020/11/10慕课网-学习资料预览 模板中的宏 什么是宏 把常用功能抽取出来,实现可重用 简单理解:宏函数 宏可以写在单独的html文件中 2020/11/10慕课网-学习资料预览 模板中的宏 定义宏像书写函数一样定义宏 % macro input(name, value=, type=text, size=20) -% %- endmacro % 模板中的宏 使用宏像调用函数一样调用 input(username) input(password, type=password) 2020/11/10慕课网-学习资料预览 模板中的宏 文件中宏的使用 1. forms.html将前面定义的宏保存为 2. 导入: 3. forms.input(username) 使用: % import forms.html as forms % % from forms.html import input % 模板的继承 2020/11/10慕课网-学习资料预览 模板的继承 思考:为什么要对模板进行抽象和继承? 思考:如下场景怎样设计(易维护、可扩展)? 每个页面都引用了公共的头部, ,jscss 有几个页面结构和内容及其相似(如:导航菜单) 继承实现 步骤一:将可变的部分圈出来(base.html) % block content % % endblock % 步骤二:继承父模板 % extends base.html % 2020/11/10慕课网-学习资料预览 继承实现 步骤三:填充新的内容(index.html) % extends base.html % % block content % % endblock % 继承实现 步骤四:复用父模板的内容()可选 % extends base.html % % block header % super() % endblock % 2020/11/10慕课网-学习资料预览 模板的继承 思考:只有部分页面使用到的怎么设计?导航条 导航条 页面A 导航条 页面页面BC 模板的继承 思考:只

      《Flask模板语法与继承》由会员金****分享,可在线阅读,更多相关《Flask模板语法与继承》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.