Flask学习之旅——2.1 模板简介及基础使用
Flask学习之旅——2.1 模板简介及基础使用
前言
- 本文为《知了传课——模板简介》的学习笔记。
- 原文地址:第一节:模板简介 - Python框架Flask基础教程 - 知了传课 (zlkt.net)
什么是模板?
- 模板是一个
web
开发必备的模块。因为我们在渲染一个网页的时候,并不是只渲染一个纯文本字符串,而是需要渲染一个有富文本标签的页面。这时候我们就需要使用模板了。 - 在
Flask
中,配套的模板是Jinja2
,Jinja2
的作者也是Flask
的作者。这个模板非常的强大,并且执行效率高。
创建模板
- 我们在创建
Flask
项目的时候,会自动在该项目下创建一个template
文件夹,这个文件夹是专门用来保存模板的。 - 在该文件下,创建一个HTML文件,则这个HTML文件就是我们所说的模板。
Flask渲染Jinja
模板
要渲染一个模板,通过render_template
方法即可
例子
from flask import Flask,render_template #这里需要引入render_template库
app = Flask(__name__)@app.route('/about/')
def about():return render_template('about.html')
当访问/about/
的时候,about()
函数会在当前目录下的templates
文件夹下寻找about.html
模板文件。
变量的使用
如果想要传递变量到模板中,可以先把变量定义为字典,然后在render_template
中通过关键字传递过去。render_template('xxx.html',**字典名)
。
app.py
from flask import Flask, request, redirect, url_for, render_template
import configapp = Flask(__name__)
app.config.from_object(config) ###使用配置文件@app.route('/about/')
def about():context = {"username":"admin"} ###创建一个字典,用于传递数据return render_template('about.html',**context)if __name__ == '__main__':app.run()
about.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>关于我们</title>
</head>
<body>
<h1>关于我们——用户名:{{ username }}</h1>
</body>
</html>
运行后的效果图:
补充内容
1. <html lang="en">
2. <head>
3. <title>My Webpage</title>
4. </head>
5. <body>
6. <ul id="navigation">
7. {% for item in navigation %}
8. <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
9. {% endfor %}
10. </ul>
11.
12. {{ a_variable }}
13. {{ user.name }}
14. {{ user['name'] }}
15.
16. {# a comment #}
17. </body>
18.</html>
语句 | 作用 |
---|---|
{{...}}
|
用来装载一个变量,模板渲染的时候,会把这个变量代表的值替换掉。并且可以间接访问一个变量的属性或者一个字典的key 。关于点. 号访问和[] 中括号访问,没有任何区别,都可以访问属性和字典的值。
|
{%...%}
|
用来装载一个控制语句,上面装载的是for 循环,以后只要是要用到控制语句的,就用{% %}
|
{# … #} | 用来装载一个注释,模板渲染的时候会忽视这中间的值。 |
属性访问规则
- 比如在模板中有一个变量这样使用:
foo.bar
,那么在Jinja2
中是这样进行访问的:- 先去查找
foo
的bar
这个属性,也即通过getattr(foo,'bar')
。 - 如果没有,就去通过
foo.__getitem__('bar')
的方式进行查找。 - 如果以上两种方式都没有找到,返回一个
undefined
。
- 先去查找
- 在模板中有一个变量这样使用:
foo['bar']
,那么在Jinja2
中是这样进行访问:- 通过
foo.__getitem__('bar')
的方式进行查找。 - 如果没有,就通过
getattr(foo,'bar')
的方式进行查找。 - 如果以上没有找到,则返回一个
undefined
。
- 通过
总结
模板文件,即
HTML
文件,需要放到templates
文件夹下,也可以通过Flask(__name__,template_folder)
修改模板地址,后者不推荐使用。通过
render_template
来渲染模板。模板文件,即
HTML
文件,需要放到templates
文件夹下,也可以通过Flask(__name__,template_folder)
修改模板地址,后者不推荐使用。通过
render_template
来渲染模板。如果想要传递变量到模板中,可以先把变量定义为字典,然后在
render_template
中通过关键字传递过去。render_template('xxx.html',**字典名)
。
Flask学习之旅——2.1 模板简介及基础使用相关推荐
- Flask学习之旅——2.6 模板继承
Flask学习之旅--2.6 模板继承 前言 本文为<知了传课--模版继承>的学习笔记. 原文地址:第八节:模板继承 - Python框架Flask基础教程 - 知了传课 (zlkt.ne ...
- Flask学习之旅——2.2 模板过滤器
Flask学习之旅--2.2 模板过滤器 前言 本文为<知了传课--Jinja2模版过滤器>的学习笔记. 原文地址:第三节:模板过滤器 - Python框架Flask基础教程 - 知了传课 ...
- Flask学习之旅——1.1初识Flask
Flask学习之旅--1.1初识Flask 前言 从本文开始,正式踏上了学习Python Flask的旅程啦. 我是跟着知了传课进行学习的,本系列涉及到的内容大部分来自知了传课. Flask简介 Fl ...
- Flask学习之旅——3 视图高级
Flask学习之旅--3 视图高级 前言 本文为<知了传课-- 视图高级>的学习笔记. 蓝图 为什么使用蓝图? 当项目比较大或者代码比较多的时候,让所有的url和视图函数放在同一个文件夹里 ...
- Flask学习之旅——2.5 include和set语句
Flask学习之旅--2.5 include和set语句 前言 本文为<知了传课--控制语句>的学习笔记. 原文地址:第七节:include和set语句 - Python框架Flask基础 ...
- Flask学习之旅——2.4 宏与import语句
Flask学习之旅--2.4 宏与import语句 前言 本文为<知了传课--控制语句>的学习笔记. 原文地址:第六节:宏和import语句 - Python框架Flask基础教程 - 知 ...
- Flask学习之旅——2.8 配置静态文件
Flask学习之旅--2.8 配置静态文件 前言 本文为<知了传课-- 配置静态文件>的学习笔记. 原文地址:第十一节: 配置静态文件 - Python框架Flask基础教程 - 知了传课 ...
- Flask学习之旅——2.3 控制语句
Flask学习之旅--2.3 控制语句 前言 本文为<知了传课--控制语句>的学习笔记. 原文地址:第四节:控制语句 - Python框架Flask基础教程 - 知了传课 (zlkt.ne ...
- Flask学习之旅——1.2项目配置
Flask学习之旅--1.2项目配置 前言 本文是我在知了传课学习的学习笔记. 上一篇:Flask学习之旅--1.1初识Flask 下一篇:Flask学习之旅--1.3 URL与视图(一) 一.设置为 ...
最新文章
- 纹理对象的实时姿态估计
- Linux启动多个Oracle实例
- 搞清这些陷阱,NULL和三值逻辑再也不会作妖
- 引用自己创建的css样式表_如何使用CSS创建联系表
- 2.[精通Hibernate笔记]整合Spring
- 病毒周报(100118至100124)
- C#WinForm程序异常退出的捕获、继续执行与自动重启
- Linux下C++的多线程编程
- 以太坊 事务处理流程
- C# List 深复制
- navicat for MySQL连接本地数据库时报1045错误的解决方法
- Entity Relationship diagram/Data model for Microsoft Navision
- linux新手入门-2.开局
- vrrp和mstp实现网关冗余备份以及链路的负载均衡
- Nginx+lua开发(OpenResty生态)
- 多图识字 | 自动识别提取图片文字,微信小程序
- 【方法】科大讯飞在线语音合成API使用-文字转语音音频
- 最简真分数(最小公倍数)
- 模型可解释性-LIME
- iOS开发日记54-Xcode7调试神技
热门文章
- 一碗面风行30年,康师傅匠心守护传承中国味道
- 用发票识别不担心发票丢失
- 【LeetCode】91.解码方法
- php mysql 模糊查询_PHP如何实现模糊查询(图文代码)
- 实验5:简单恐龙识别系统的产生式推理
- 【iOS高级资深工程师面试篇】②、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 Objective-C语言特性部分1/2 分类-关联对象-扩展-代理
- JavaScript 07 —Array Cardio Day2
- K-近邻算法(约会问题)
- 除了暴富神话 区块链让你记住仅仅是炒币
- 聚合支付需要什么证?