zoukankan      html  css  js  c++  java
  • 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 的步骤。
  • 相关阅读:
    JavaWeb--HttpSession案例
    codeforces B. Balls Game 解题报告
    hdu 1711 Number Sequence 解题报告
    codeforces B. Online Meeting 解题报告
    ZOJ 3706 Break Standard Weight 解题报告
    codeforces C. Magic Formulas 解题报告
    codeforces B. Sereja and Mirroring 解题报告
    zoj 1109 Language of FatMouse 解题报告
    hdu 1361.Parencodings 解题报告
    hdu 1004 Let the Balloon Rise 解题报告
  • 原文地址:https://www.cnblogs.com/brt2/p/13950108.html
Copyright © 2011-2022 走看看