1 模板 -Templates 1 什么是模板 模板,在Flask中就是允许响应给用户看的网页在模板中,允许包含“占位变量”来表示动态的内容 模板最终也会被解析成字符串再响应给客户端,这一过程通常称为“渲染” 2 模板的设置 默认情况下,Flask会在程序文件夹中的 templates 的子文件夹中搜索模板 默认情况下,需要手动创建 templates 文件夹 3 模板的渲染 作用:在视图中,将模板文件(xx.html)渲染成字符串之后,再响应给客户端浏览器 函数:render_template(xx.html) 4 模板中的语法(重难点) 1 变量 变量是一种特殊的占位符,告诉模板引擎该位置的值是从渲染模板时的数据中获取出来的 在视图中: app.route('/') def index(): return render_template('xx.html',变量1 = 值1,变量2 = 值2) 2 过滤器 1 什么是过滤器 过滤器是允许在变量输出前改变变量的值 2 语法 {{ 变量|过滤器}} Jinja2 模板中常见的过滤器: 过滤器名 说明 capitalize 首字符变大写,其他变小写 lower 将值转换为小写 upper 将值转换为大写 title 将值中的每个单词首字符变大写 trim 去掉值两边的空格 3 标签 1 什么是标签 每个标签标示的是不同的服务器端的功能 2 常用标签 1。 if标签 1 基本if结构 {% if 条件 %} {% endif %} 2 if... else 结构 {% if 条件 %} 满足条件时要运行的代码 {% else %} 不满足条件时要运行的代码 {% endif %} 3 if...elif ..elif ..else {% if 条件1 %} 满足条件1 ,要运行的代码 {% elif 条件2 %} 满足条件2,要运行的代码 {% else %} {% endif %} 2 for 标签 {% for 变量 in 元组|字典|列表%} {% endfor %} 在 Jinja2模板的循环中,支持内部变量-loop loop作用:记载当前循环中的一些相关信息 loop 常用属性 1 index 用法:loop.index 作用:记录当前循环的次数,从 1 开始纪录 2 index0 用法: loop.index0 作用:同上,从0开始记录 3 first 用法:loop.first 作用:值为True,则表示当前循环是第一次循环 4 last 用法:loop.last 作用:值为True,则表示当前循环是最后一次循环 3 macro 标签(宏) 1 作用: 相当于是在模板中声明函数 2 语法 使用{% macro %}声明宏 {% macro 名称(参数列表) %} {% endmacro %} 3 在独立的文件中声明宏 1 创建 macro.html 模板文件 作用:定义项目中要用到的所有的宏
{% macro show_p(str)%}"background: orange">{{str}}
{% endmacro %} {% macro show_li(str) %}
"font-size: 20px;">内容
2 在使用的网页中,导入macro.html {% import 'macro.html' as macros %}
"en"> "UTF-8">Title {% import 'macro.html' as macros %} {% for i in list_1 %} {{macros.show_li(i)}} {% endfor %}
4 include 标签
将其他的模板文件包含到当前的模板文件中
语法:{% include 'xx.html' %}
{% include '05-head.html' %}
5 静态文件处理
1 什么是静态文件
在Flask中不能与服务器动态交互的文件都是静态文件
如:图片,css文件,Js文件,音视频文件
2 静态文件的处理
1 所有的静态文件必须放在名为static 的目录中
static目录要放在项目的根目录处
2 所有的静态文件必须通过 /static/路径访问
/static/images/a.jpg
/static 要到静态资源目录中继续搜索
1 模板
1 静态文件地址的反向解析
url_for('static',filname='')
et:
url_for('static',filename='image/b041.jpg')
2 模板的继承
1 什么是模板的继承
模板的继承类似于类的继承,如果一个模板中出现的内容来自于另一个模板的话,那么就可以使用继承的方式来简化开发
2 语法
1 父模板
需要定义出哪些东西在子模板中是可以被重写的
{{ block 块名}}
父模板中正常显示的内容
{{ endblock }}
block
1 在父模板中是可以正常显示的,没有任何影响
2 在子模板中是可以被重写的
2 子模板
1 需要指定继承来自哪个父模板
{% extends 父模板的名称 %}
2 重写父模板中对应的内容
{{ block 块名 }}
此处编写的内容会覆盖掉父模板中同名block的内容
允许通过{{ super() }}来调用父模板中的内容
{{ endblock }}
2 修改配置
1 构建Flask 应用时允许指定的配置信息
app =Flask(__name__,template_folder='muban',static_url_path='/s',static_folder='/sta')
template_folder:指定存放模板的文件夹名称
static_url_path:访问静态资源的路径
static_foler:指定存放静态文件目录名称
在项目的根目录中,有一个名为sta的目录用于存放静态文件
3 请求(request) 和 响应(response)
1 HTTP协议
Request Headers - 请求消息头
Response Headers - 响应消息头
2 请求对象 - request
request - 请求对象,封装了所有与请求相关的信息,如:请求数据,请求消息头,请求路径,...
在Flask中,要使用request 的话,必须先导入
from flask import request
1 request 的常用成员
1 scheme: 获取请求方案(协议)
2 method: 获取本期请求的请求方式(重点)
3 args :获取使用get请求方式提交的数据
4 form :获取使用post 请求方式提交的数据
5 cookies: 获取cookies的相关信息
6 headers: 获取请求消息头的相关信息
7 files:获取上传的文件
8 path :获取请求的url地址
9 full_path :获取请求的url地址(进入到主机后的请求资源地址,包含请求参数)
10 url :获取完整的请求地址,从协议开始的地址
2 获取请求提交的数据
1 get 请求方式
1 表单允许实现get请求
2 在请求地址后拼请求提交的参数
request.args封装的是get 请求的数据
2 post 请求方式
post请求只有在表单中才能够被触发