【Flask】总结静态文件及渲染模板的使用

简介: 【Flask】总结静态文件及渲染模板的使用

静态文件


动态的 web 应用同样需要静态文件。


CSS 和 JavaScript 文件通常来源于此。


理想情况下,你的 web 服务器已经配置好为它们服务,然而在开发过程中 Flask 就能够做到。只要在你的包中或模块旁边创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。


给静态文件生成 URL ,使用特殊的 static 端点名:

url_for('static', filename='style.css')

这个文件是应该存储在文件系统上的 static/style.css 。



渲染模板


其实我一直都不太喜欢模板引擎这个概念,在越大型的项目中你的代码会变得越繁琐,我跟倾向于前后端分离


Python 中生成 HTML 并不好玩,实际上是相当繁琐的,因为你必须自行做好 HTML 转义以保持应用程序的安全。由于这个原因,Flask 自动为你配置好 Jinja2 模板


你可以使用方法 render_template() 来渲染模板


所有你需要做的就是提供模板的名称以及你想要作为关键字参数传入模板的变量。


如果你的如有文件长这样:


from flask import Flask, render_template
app = Flask(__name__)
@app.route('/hello/')
@app.route('/hello/<name>')
# 设置默认 name 为 None
def hello(name=None):  
    # 将 name 参数传递到模板变量中
    return render_template('hello.html', name=name)


那么你的hello.html文件需要放置到 ./templates/下:

/application.py
/templates
    /hello.html

对于模板,你可以使用 Jinja2 模板的全部能力


详细信息查看官方的 Jinja2 Template Documentation


然后向 hello.html 模板文件中添加如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello From Flask</title>
</head>
<body>
    {% if name %}
        <!-- 如果 name 不为空则将 name 渲染出来 -->
        <h1>Hello {{ name }}!</h1>
    {% else %}
        <!-- 如果 name 为空则打印 Hello World! -->
        <h1>Hello World!</h1>
    {% endif %}
</body>
</html>

运行一下试试


export FLASK_APP=hello.py
export FLASK_ENV=development
export FLASK_DEBUG=1
flask run

在模板中你也可以使用 request、session链接g 对象,也能使用函数 get_flashed_messages() 。


模板继承是十分有用的。如果想要知道模板继承如何工作的话,请阅读文档模板继承。


基本的模板继承使得某些特定元素(如标题、导航和页脚)在每一页成为可能。


自动转义默认是开启的,因此如name包含 HTML,它将会自动转义。


如果你信任一个变量,并且你知道它是安全的(例如一个模块把 wiki 标记转换到 HTML ),你可以用Markup类或|safe过滤器在模板中标记它是安全的。 在 Jinja 2 文档中,你会见到更多例子。


目录
相关文章
|
7月前
|
移动开发 JavaScript 前端开发
Flask 结合 Highcharts 实现动态渲染图表
Flask 结合 Highcharts 实现动态渲染图表
|
2月前
|
Python
Flask 模板标签语言的使用
Flask 模板标签语言的使用
23 4
|
2月前
|
自然语言处理 Python
六、Flask模板使用方法
六、Flask模板使用方法
23 0
|
4月前
|
Python Windows 内存技术
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
|
4月前
|
前端开发 Python
使用 Flask 3 搭建问答平台(三):注册页面模板渲染
使用 Flask 3 搭建问答平台(三):注册页面模板渲染
|
6月前
|
前端开发 文件存储 Python
【已解决】Flask当中render_template函数使用过程当中css文件无法正常渲染
【已解决】Flask当中render_template函数使用过程当中css文件无法正常渲染
|
6月前
|
前端开发 JavaScript Python
flask实战-模板实现公共导航
在Flask中实现模板继承,创建基础模板`base.html`,包含公共导航菜单。子模板`movie-extends.html`继承`base.html`,并定义主要内容。视图函数`movie_extends_view`渲染`movie-extends.html`,显示电影列表。通过`extra_css`和`extra_js`块添加页面特定的样式和脚本,实现在`movie-extends.html`中应用自定义CSS样式。运行应用,访问http://127.0.0.1:1027/movie-extends,页面显示定制的电影列表样式。
94 2
|
7月前
|
Python
Flask中的模板的使用
Flask中的模板的使用
53 0
|
7月前
|
存储 移动开发 前端开发
Flask狼书笔记 | 03_模板
3 模板 模板(template):包含固定内容和动态部分的可重用文件。Jinja2模板引擎可用于任何纯文本文件。 3.1 模板基本使用
66 0
|
7月前
|
开发框架 Python
Web 框架 Flask 快速入门(一)flask基础与模板
🌴 Flask基础和模板 1、web框架的作用 避免重复造轮子,app程序不必关心于服务器的沟通方式,而专注于核心的业务逻辑实现。 稳定,可扩展性强
134 0