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)%}
<p style="background: orange">{{str}}</p>
{% endmacro %}
{% macro show_li(str) %}
<li><p style="font-size: 20px;">内容</p></li>
<span style="color: red;">{{str}}</span>
{% endmacro %}

                2 在使用的网页中,导入macro.html
{% import 'macro.html' as macros %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% import 'macro.html' as macros %} {% for i in list_1 %}
{{macros.show_li(i)}}
{% endfor %}
</body>
</html>
          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='<file_path>')
    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请求
          <form action=""> method ="get">
            姓名:<input name ='uname'>
          </form>
        2 在请求地址后拼请求提交的参数
          request.args封装的是get 请求的数据
      2 post 请求方式
        post请求只有在表单中才能够被触发
        <form method='post'>
        获取post 请求提交的数据:
          request.form 封装的就是post请求的数据,类型为字典
        request.form['name']:获取name 对应的值
        request.form.get('name'):获取name 对应的值
        request.form.getlist('name'):获取name 列表数据(如复选框,下拉列表)
        

macro 标签,和静态文件,以及templates的更多相关文章

  1. day51:django:dispatch&模板渲染&过滤器&标签&组件&静态文件配置

    目录 1.dispatch 2.模板渲染 3.过滤器 4.标签 5.组件 6.静态文件配置 dispatch 回顾:CBV对应的URL传参 urls.py url(r'^book/(\d+)/(\d+ ...

  2. Django 2.0 学习(09):Django 静态文件(样式和背景图片)

    应用的定制化:静态文件 首先,在polls目录中创建一个名叫static的目录.Django会在该目录里面查找静态文件,类似于Django在polls/template目录下查找模板文件. Djang ...

  3. Flask初级(四)flash在模板中使用静态文件

    Project name :Flask_Plan templates: 默认设置下,Flask在程序根目录中名为static的子目录中寻找静态文件. 随便找个图片放进去把,命令test.png Fla ...

  4. django静态文件配置和使用

    一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...

  5. 7. url反向解析和静态文件

    一.代码中url出现的位置 1.模版[html]中 1.<a href='urk'>超链接点击跳转<a/> 2.<form action='url' method='po ...

  6. Django 模板 语法 变量 过滤器 模板继承 组件 自定义标签和过滤器 静态文件相关

    本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法 ...

  7. django系列4.2--自定义标签, 自定义过滤器, inclusion_tag, 引入静态文件(css,js等)

    项目的目录为 在app中创建templates时,最好要再创建一个app名相同的文件夹,因为项目找文件时从第一个app开始遍历,不同app内的同名文件会有冲突,所以这样处理 一.自定义标签和过滤器 1 ...

  8. django之模板系统 --》内容(filter过滤器、tags标签【for、if、with】、母板以及继承、crf_token、注释、组件、静态文件【load static】、get_static_prefix、自定义标签和tag)

    常用: Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 变量 {{ 变量名 }} 变量名由字母数字和下 ...

  9. Django下的templates 和 static静态文件

    如果Django顶层目录中没有templates的话,就自己新建一个Directory ,这个文件是存放html文件的 1)如果在views里面用render(request,"" ...

随机推荐

  1. 123457123456#0#-----com.threeapp.XueShuXue013----儿童学数学(13种方法)

    com.threeapp.XueShuXue013----儿童学数学(13种方法)

  2. 树莓派连接显示器后设置ssh服务开机自动开启

    进入命令行,然后执行: cd /boot sudo touch ssh sudo restart -r now 然后就重新启动了,重启好了会有依据提示. 然后可以输入ssh localhost进行一下 ...

  3. 第六章 Realm及相关对象——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2022468 目录贴:跟我学Shiro目录贴 6.1 Realm [2.5 Realm]及[3. ...

  4. 【c# 学习笔记】数值类型

    c# 中的数值类型分为:整型.浮点型.十进制.如下图. 1.整型数值的取值范围和内存大小 类型 说明 取值范围 byte 无符号的8位整数 0到255(即2的8次方-1) sbyte   有符号的8位 ...

  5. 【miscellaneous】视频浓缩摘要简介

    视频摘要,就是以自动或者半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段,将它们以某种特点的方式重新组合成紧凑的.能够充分表现视频语义内容的浓缩视频. 一.静态视频摘 ...

  6. Spring jsp 验证 form:errors标签

    1 在model层添加验证规则 @NotNull @Size(min=2,max =30,message="姓名在2-30个字符之间") private String userna ...

  7. CEC、ARC功能介绍

    众所周知,HDMI作为一个数字化视频音频的接收标准,是可以同时传输视频和音频的,当然随着HDMI版本的提升,它的功能也一直在增强.事实上HDMI升级到1.3时,人们就发现了HDMI多了一个CEC功能. ...

  8. python 创建虚拟环境时报错OSError, setuptools下载失败

    错误信息如下: Using base prefix 'c:\\users\\huful\\appdata\\local\\programs\\python\\python36-32'New pytho ...

  9. Stream入门及Stream在JVM中的线程表现

    继上次学习过Java8中的非常重要的Lambda表达式之后,接下来就要学习另一个也比较重要的知识啦,也就如标题所示:Stream,而它的学习是完全依赖于之前学习的Lambda表达式. 小实验引入: 这 ...

  10. (模板)poj1113(graham扫描法求凸包)

    题目链接:https://vjudge.net/problem/POJ-1113 题意:简化下题意即求凸包的周长+2×PI×r. 思路:用graham求凸包,模板是kuangbin的. AC code ...