• Flask: 静态文件


    github: 李辉 - 静态文件

    静态文件(static files)和我们的模板概念相反,指的是内容不需要动态生成的文件。比如图片、CSS 文件和 JavaScript 脚本等。

    1. 生成静态文件 URL

    在 HTML 文件里,引入这些静态文件需要给出资源所在的 URL。为了更加灵活,这些文件的 URL 可以通过 Flask 提供的 url_for() 函数来生成。

    在第 2 章的最后,我们学习过 url_for() 函数的用法,传入端点值(视图函数的名称)和参数,它会返回对应的 URL。对于静态文件,需要传入的端点值是 static,同时使用filename 参数来传入相对于 static 文件夹的文件路径。

    假如我们在 static 文件夹的根目录下面放了一个 foo.jpg 文件,下面的调用可以获取它的 URL:

    <img src="{{ url_for('static', filename='foo.jpg') }}">
    

    花括号部分的调用会返回 /static/foo.jpg

    2. 添加 Favicon

    Favicon(favourite icon) 是显示在标签页和书签栏的网站头像。你需要准备一个 ICO、PNG 或 GIF 格式的图片,大小一般为 16×16、32×32、48×48 或 64×64 像素。把这个图片放到 static 目录下,然后像下面这样在 HTML 模板里引入它:

    <head>
        ...
        <link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}">
    </head>
    

    保存后刷新页面,即可在浏览器标签页上看到这个图片。

    3. 添加图片

    创建子文件夹管理图片。这并不是必须的,只是为了更好的组织同类文件。

    <h2>
        <img alt="Avatar" src="{{ url_for('static', filename='images/avatar.png') }}">
        {{ name }}'s Watchlist
    </h2>
    ...
    <img alt="Walking Totoro" src="{{ url_for('static', filename='images/totoro.gif') }}">
    

    4. 添加 CSS

    虽然添加了图片,但页面还是非常简陋,因为我们还没有添加 CSS 定义。下面在 static 目录下创建一个 CSS 文件 style.css,内容如下:

    static/style.css:定义页面样式

    /* 页面整体 */
    body {
        margin: auto;
        max- 580px;
        font-size: 14px;
        font-family: Helvetica, Arial, sans-serif;
    }
    
    /* 页脚 */
    footer {
        color: #888;
        margin-top: 15px;
        text-align: center;
        padding: 10px;
    }
    
    /* 头像 */
    .avatar {
         40px;
    }
    
    /* 电影列表 */
    .movie-list {
        list-style-type: none;
        padding: 0;
        margin-bottom: 10px;
        box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
    }
    
    .movie-list li {
        padding: 12px 24px;
        border-bottom: 1px solid #ddd;
    }
    
    .movie-list li:last-child {
        border-bottom:none;
    }
    
    .movie-list li:hover {
        background-color: #f8f9fa;
    }
    
    /* 龙猫图片 */
    .totoro {
        display: block;
        margin: 0 auto;
        height: 100px;
    }
    

    接着在页面的 标签内引入这个 CSS 文件:

    templates/index.html:引入 CSS 文件

    <head>
        ...
        <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}" type="text/css">
    </head>
    

    最后要为对应的元素设置 class 属性值,以便和对应的 CSS 定义关联起来:

    templates/index.html:添加 class 属性

    <h2>
        <img alt="Avatar" class="avatar" src="{{ url_for('static', filename='images/avatar.png') }}">
        {{ name }}'s Watchlist
    </h2>
    ...
    <ul class="movie-list">
        ...
    </ul>
    <img alt="Walking Totoro" class="totoro" src="{{ url_for('static', filename='images/totoro.gif') }}">
    

    5. 进阶提示

    • 如果你对 CSS 很头疼,可以借助前端框架来完善页面样式,比如 Bootstrap、Semantic-UI、Foundation 等。它们提供了大量的 CSS 定义和动态效果,使用起来非常简单。
    • 扩展 Bootstrap-Flask 可以简化在 Flask 项目里使用 Bootstrap 4 的步骤。
  • 相关阅读:
    [Tool]使用ConfuserEx混淆代码
    Python_安装官方whl包和tar.gz包
    0017_集合的补充
    0016_练习题d2
    0015_各数据类型方法代码实现
    0014_基本数据类型及常用方法剖析
    0013_运算符
    0012_编码转换
    0011_练习题d1
    0010_while循环
  • 原文地址:https://www.cnblogs.com/brt2/p/13950108.html
Copyright © 2020-2023  润新知