• macro 标签,和静态文件,以及templates


    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 列表数据(如复选框,下拉列表)
            
  • 相关阅读:
    JS面向对象的理解
    引用类型值的相等判断
    数组的常用方法
    得到一定范围内的随机数
    数组随机排序
    【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
    卷积层和池化层学习
    R-FCN:基于区域的全卷积网络来检测物体
    【目标检测】Faster RCNN算法详解
    Selective Search for Object Recognition
  • 原文地址:https://www.cnblogs.com/Skyda/p/9872034.html
Copyright © 2020-2023  润新知