第3天:模板渲染与静态文件处理
模板渲染简介
在Web开发中,模板是一个包含动态内容占位符的文本文件。Flask使用Jinja2模板引擎来渲染这些模板,生成最终发送给用户的HTML页面。
为什么使用模板?
- 分离逻辑与展示:将Python代码与HTML分离,使得Web页面的创建更加灵活。
- 动态内容:可以轻松地将变量和逻辑插入到HTML中。
- 重用性:模板可以被多个视图函数重用。
创建和渲染模板
-
创建模板文件:
- Flask的模板文件通常以
.html
为扩展名,存放在项目目录下的templates
文件夹中。
- Flask的模板文件通常以
-
编写模板:
- 在模板中,你可以使用Jinja2的语法来插入变量和控制结构(如循环和条件语句)。
示例模板 (templates/greet.html
):
<!DOCTYPE html>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
- 在视图函数中渲染模板:
- 使用
render_template
函数来渲染模板,并传递变量。
- 使用
示例视图函数:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/greet/<name>')
def greet(name):
return render_template('greet.html', name=name)
静态文件处理
静态文件是指不会被服务器端代码处理的文件,如CSS、JavaScript和图片文件。Flask提供了一个简单的方法来管理这些文件。
-
存放静态文件:
- 静态文件通常存放在项目目录下的
static
文件夹中。
- 静态文件通常存放在项目目录下的
-
引用静态文件:
- 在模板中,你可以使用
url_for
函数来生成静态文件的URL。
- 在模板中,你可以使用
示例:
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
使用静态文件
- 在
static
文件夹中创建一个style.css
文件,并在模板中引用它。
模板继承
Jinja2支持模板继承,这意味着你可以创建一个基础模板,定义通用的结构和样式,然后在其他模板中扩展它。
示例基础模板 (templates/base.html
):
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My App{% endblock %}</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
扩展基础模板:
{% extends 'base.html' %}
{% block title %}Greeting{% endblock %}
{% block content %}
<h1>Hello, {{ name }}!</h1>
{% endblock %}
结语
今天,我们学习了如何在Flask中使用模板来渲染动态内容,以及如何管理静态文件。模板渲染使得我们可以创建动态且可重用的Web页面,而静态文件处理则帮助我们管理CSS、JavaScript和图片等资源。
明天,我们将学习如何处理表单数据,这是Web应用中与用户交互的重要部分。
记得尝试创建自己的模板和静态文件,看看它们是如何工作的。实践是学习的关键,所以不要犹豫,动手实践吧!