Python Flask 基础入门 第五课:模板引擎 Jinjia2 模板继承
2023-12-20 06:46:04
模板引擎
当涉及到Flask框架中的模板渲染时,这篇博客将深入讨论该主题,并分成不同章节来详细介绍。我们将学习什么是模板引擎,如何使用Jinja2来渲染HTML页面,如何传递数据给模板以动态生成内容,以及如何使用模板继承来创建一致的页面布局。
什么是模板引擎?
模板引擎是一种用于动态生成HTML或其他文本内容的工具。在Flask中,我们使用Jinja2作为默认的模板引擎。Jinja2允许我们在HTML模板中插入动态内容,例如从数据库中检索的数据或用户提供的输入。
使用Jinja2模板引擎
安装Jinja2
要开始使用Jinja2,首先需要确保Flask已正确安装,因为Flask已经集成了Jinja2。如果未安装,可以使用pip进行安装:
pip install Flask
创建HTML模板
- 在Flask应用的根目录下创建一个名为 “templates” 的文件夹。
- 在 “templates” 文件夹中创建一个HTML模板文件,例如 “index.html”。
模板变量
在模板中,您可以使用双大括号 {{ 变量名 }} 来插入变量。这些变量将在渲染模板时由Flask动态替换。
<!DOCTYPE html>
<html>
<head>
<title>模板示例</title>
</head>
<body>
<h1>{{ title }}</h1>
<p>{{ content }}</p>
</body>
</html>
渲染模板
在Flask应用中,您可以使用render_template
函数来渲染模板并传递变量的值。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
title = "欢迎来到我的网站"
content = "这是一个使用Flask和Jinja2的示例页面"
return render_template('index.html', title=title, content=content)
传递数据给模板
要向模板传递数据,您可以在render_template
函数中提供关键字参数。上面的示例已经演示了如何传递title
和content
变量。您可以传递任何需要在模板中显示的数据。
模板继承
模板继承是一种强大的技术,可以使您在多个页面中共享相同的布局结构。通常,您会创建一个基本模板,然后在不同页面上扩展它。
创建基本模板
- 创建一个名为 “base.html” 的基本模板文件,其中包含通用的HTML结构,例如头部、导航栏和页脚。
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于</a></li>
</ul>
</nav>
<div class="content">
{% block content %}{% endblock %}
</div>
<footer>© 2023 My Website</footer>
</body>
</html>
扩展基本模板
在其他页面的模板中,您可以使用{% extends 'base.html' %}
来扩展基本模板,并使用{% block %}
标记来定义特定页面的内容。
{% extends 'base.html' %}
{% block title %}关于我们{% endblock %}
{% block content %}
<h1>关于我们</h1>
<p>这是关于我们页面的内容。</p>
{% endblock %}
使用模板继承,您可以轻松创建具有一致外观的多个页面,同时减少重复的HTML代码。
这些章节涵盖了Flask框架中模板渲染的基础知识,从模板引擎的概念到使用Jinja2创建模板、传递数据和使用模板继承来实现一致的页面布局。随着实践的深入,您将能够创建出精美而功能强大的Web应用程序。
文章来源:https://blog.csdn.net/qq_31600443/article/details/135080274
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!