目录

include导入模板

set与with的使用

set的使用

with语句

静态资源的引入

静态文件

模板继承

模板继承语法

block语法

调用另外一个block中的代码

模板继承练习


include导入模板

1. 这个标签相当于是直接将指定的模版中的代码复制粘贴到当前位置。

2. include标签,如果想要使用父模版中的变量,直接用就可以了,不需要使用with context

3. include的路径,也是跟import一样,直接从templates根目录下去找,不要以相对路径去找。

在templas中创建common文件夹在里边创建header.html文件和footer.html文件,并通过 下面的方式进行调用:

<hr>{% include 'common/header.html' %}<main>主要内容</main>{% include 'common/footer.html' %}

set与with的使用

set的使用

set是全局变量,在模版中,可以使用set语句来定义变量。

{% set uname = 'xiaolin' %}<p>用户名:{{ uname }}</p>

一旦定义了这个变量,那么在后面的代码中,都可以使用这个变量,就类似于Python的变量定义是一样的。

with语句

with像是局部变量,with语句定义的变量,只能在with语句块中使用,超过了这个代码块,就不能再使用了。

    {% with nick = '小林' %}<p>昵称:{{ nick }}</p>{% endwith %}

注意

关于定义的变量,with语句也不一定要跟一个变量,

可以定义一个空的with语句,

需要在指定的区域才能使用的情况,可以set与with组合使用

    {% with %}{% set age = 20 %}<p>年龄:{{age}}</p>{% endwith %}

静态资源的引入

静态文件

静态文件包括:css文件 js文件 图片文件等文件

加载静态文件使用的是url_for函数。然后第一个参数需要为static,第二个参数需要为一个关键字参数filename='路径'

下面是引入js/css/img的基本模板:

需要创建一个static的文件夹,里边可以在创建js/css/img等文件夹分类管理文件,在使用url_for进行引用即可。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>静态文件的引入</title><script src="{{url_for('static',filename = 'js/text.js')}}"></script><link href="{{url_for('static',filename = 'css/text.css')}}" type="text/css" rel="stylesheet"></link>
</head>
<body><h1>静态文件的引入</h1><img src="/static/img/img1.jpg" alt=""><img src="{{url_for('static',filename = 'img/img1.jpg')}}" alt="" srcset=""></body>
</html>

注意

路径查找,要以当前项目的static目录作为根目录

模板继承

为什么需要模版继承

模版继承可以把一些公用的代码单独抽取出来放到一个父模板中

以后子模板直接继承就可以使用了。

这样可以重复的利用代码,并且以后修改起来也比较方便

模板继承语法

使用extends语句,来指明继承的父模板。父模板的路径,也是相对于templates文件夹下的绝对路径

{% extends "base.html" %}

block语法

父模板与子模版的一个接口

父模板:

 {% block content  %}这个地方是主题内容{% endblock %}

子模版:

{% block content %}{{ super() }}<p>这个是子模版的内容</p>
{% endblock %}

默认情况下,子模板如果实现了父模版定义的block。那么子模板block中的代码就会覆盖掉父模板中的代码。

{{ super() }}是子模板中仍然保持父模板中原有的内容。

调用另外一个block中的代码

如果想要在另外一个模版中使用其他模版中的代码。那么可以通过{{ self.其他block名字() }}就可以了。

注意

1. 子模板中的代码,第一行,应该是extends

2. 子模板中,如果要实现自己的代码,应该放到block中。如果放到其他地方,那么就不会被渲染

模板继承练习

home_base.html :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title%}首页{% endblock %}</title><link rel="stylesheet" type="text/css" href="{{url_for('static',filename='css/style.css')}}" />
<link rel="stylesheet" type="text/css" href="{{url_for('static',filename='css/body.css')}}"/>
</head>
<body>
<div class="container"><section id="content">{% block content %}{% endblock %}</section><!-- content -->
</div>
<!-- container -->
<br><br></body>
</html>

login.html :

{% extends 'home_base.html'%}{% block title%}
登录页面
{% endblock %}{% block content %}
<form action=""><h1>会员登录</h1><div><input type="text" placeholder="邮箱" required="" id="username" /></div><div><input type="password" placeholder="密码" required="" id="password" /></div><div class=""><span class="help-block u-errormessage" id="js-server-helpinfo">&nbsp;</span>          </div> <div><!-- <input type="submit" value="Log in" /> --><input type="submit" value="登录" class="btn btn-primary" id="js-btn-login"/><a href="#">忘记密码?</a><!-- <a href="#">Register</a> --></div>
</form><!-- form -->
{% endblock %}

register.html :

{% extends 'home_base.html'%}{% block title%}
注册页面
{% endblock %}{% block content %}
<form action=""><h1>会员注册</h1><div><input type="text" placeholder="邮箱" required="" id="username" /></div><div><input type="password" placeholder="密码" required="" id="password" /></div><div><input type="password" placeholder="确认密码" required="" id="password" /></div><div class=""><span class="help-block u-errormessage" id="js-server-helpinfo">&nbsp;</span>           </div> <div><!-- <input type="submit" value="Log in" /> --><input type="submit" value="注册" class="btn btn-primary" id="js-btn-login"/><a href="#">去登录</a><!-- <a href="#">Register</a> --></div>
</form><!-- form -->
{% endblock %}

css的就不放了直接从文档里copy的哈哈哈

效果图:

厚礼谢,希望自己能早点独立完成类似的效果!!!!!!!!!!!!!

进入下一个学习内容!!!!冲冲冲

Flask之jinja2模板(三)相关推荐

  1. 【Flask】Jinja2模板的使用及控制语句

    Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...

  2. 【Flask】Jinja2模板之过滤器

    一.过滤器定义 实质上就是一个转换函数.变量可以通过"过滤器"进行修改,过滤器可以理解为是jinja2里面的内置函数和字符串处理函数. 常用的过滤器有: 1.字符串过滤器 视图函数 ...

  3. Flask中Jinja2模板|如何在Jinja2中格式化一个日期

    使用Jinja2,我如何格式化一个日期字段?我知道在Python中我可以简单地做到这一点. print(car.date_of_manufacture.strftime('%Y-%m-%d')) 有两 ...

  4. Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()

    在渲染模板时,不需要手动分配,可以直接在模板中使用的模板变量及函数:config.request.url_for().get_flashed_messages() 在Flask中,有一些特殊的变量和方 ...

  5. Flask之jinja2模板(二)

    目录 模板结构 流程控制-选择结构 控制流程-循环结构 for循环练习之99乘法表 宏 宏的使用 模板中宏的使用 模板结构 流程控制-选择结构 所有的控制语句都是放在{% ... %}中,并且有一个语 ...

  6. Flask mysql 模版传参_Flask渲染Jinja2模板和传参

    ### Flask渲染Jinja2模板和传参: 1. 如何渲染模板: * 模板放在`templates`文件夹下 * 从`flask`中导入`render_template`函数. * 在视图函数中, ...

  7. 【Flask】Jinja2之模板继承

    一般我们的网站虽然页面多,但是很多部分是重用的,比如页首,页脚,导航栏之类的.对于每个页面,都要写这些代码,很麻烦. Flask的Jinja2模板支持模板继承功能,省去了这些重复代码. 块和继承 案例 ...

  8. flask框架中的Jinja2模板引擎

    简介 在flask框架中通常使用Jinja2模板引擎来实现复杂页面的渲染. 本章主要介绍Jinja2模板引擎的基本结构和使用方法. 如何使用flask框架渲染模板 在模板中传递一个或者多个参数 if语 ...

  9. Flask_day_2渲染Jinja2模板和传参(if判断、for循环、过滤器、继承和block、URL链接)

    ***Flask渲染Jinja2模板和传参: 1.如何渲染模板 *模板放在'templates'文件夹下 *在'flask'中导入'render_template' *在视频函数中,用'render_ ...

最新文章

  1. ftp 的三种数据传输模式
  2. 数据仓库/集市 星形/雪花形 事实/维度表
  3. Python进程学习笔记-multiprocessing模块
  4. Hive静态分区表动态分区表
  5. 森林病虫防治系统 (十)
  6. jxl创Excel档java示例代码说明
  7. java 打印gc_java – 以编程方式打印启用GC日志记录时通常在JVM出口上打印的堆使用情况...
  8. [转载]Web前端开发工程师编程能力飞升之路
  9. 10 Linux之yum源码安装
  10. Window mobile 实现CLIST始终选中最新添加数据
  11. matlab 插值多项式实现
  12. php 开源报表工具,PHP制作炫目的图表 PHP报表制作方法介绍
  13. 二十五岁零基础转行做软件测试怎么样?
  14. win10 iso 下载地址
  15. git如何将本地分支关联到远程分支
  16. Jenkins2.249-自定义插件安装(十一)
  17. 当面试官问“你有什么要问我的吗”时,应该说什么?
  18. Python爬取链家北京租房信息!北京租房都租不起啊!
  19. 筑牢企业数字化转型的“底盘”,浪潮云ERP呈现出怎样的全景图?
  20. 电子制动辅助系统的传感器解决方案

热门文章

  1. Linux系统安装snmp服务
  2. 虚拟主播神器Facerig
  3. CnOpenData中国高校发明公布专利引用数据
  4. jdi屏幕斜纹_教你如何分辨小米NOTE3小米6等手机是什么屏幕与其他信息
  5. XML文件中不允许出现的字符
  6. 考研后居然能让自己改变那么多?!
  7. OpenCV调用TensorFlow是什么意思
  8. 前端之refs焦点管理
  9. AntConc3.2.0的使用说明
  10. 【疑问解答】LACP是什么?如何工作?如何配置?