下面我将为您详细讲解“python中的flask框架Jinja 模板入门教程”的完整攻略。
什么是Flask框架
Flask是一个轻量级的Python Web框架,由Armin Ronacher开发。它使用Jinja2模板引擎和Werkzeug作为底层库。Flask使用Python修饰器和处理程序函数来创建Web应用程序。
什么是Jinja模板
Jinja2是Python的一个现代化、功能丰富的模板引擎,它被Flask Web框架所采用。Jinja2提供了一种简洁并且高效的方式来生成HTML、XML或其他格式的文本输出,它的语法和Django的模板引擎类似。
Jinja模板语法
1. 变量
在模板中使用变量时,使用两个花括号"{{}}"包含起来,例如:
<h1>{{ title }}</h1>
<p>{{ content }}</p>
2. 控制语句
在Jinja2中使用控制语支,例如:
if语句
{% if user %}
Hello {{ user }}!
{% else %}
Hello Stranger!
{% endif %}
for循环语句
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
3. 模板继承
Jinja2中支持模板的继承,通过继承可以减少模板的重复代码,例如:
基础模板base.html
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
子模板index.html
{% extends "base.html" %}
{% block title %}
Index Page
{% endblock %}
{% block content %}
<h1>Welcome to Index Page</h1>
<p>This is Index Page</p>
{% endblock %}
处理Jinja模板
在Flask中,可以通过render_template函数来处理Jinja模板,例如:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
title = 'Index Page'
content = 'This is Index Page'
return render_template('index.html', title=title, content=content)
if __name__ == '__main__':
app.run()
在上面的示例中,我们定义了一个基础模板base.html和一个子模板index.html,在index路由函数中,我们通过render_template函数来渲染index.html模板,并传递title和content参数。
使用Jinja模板渲染表单
在下面的示例中,我们将会使用Jinja模板来渲染一个简单的表单。
1. 基础模板base.html
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
2. 子模板index.html
{% extends "base.html" %}
{% block title %}
Contact Page
{% endblock %}
{% block content %}
<h1>Contact Us</h1>
<form method="post">
<p>
<label>Name:</label>
<input type="text" name="name" required>
</p>
<p>
<label>Email:</label>
<input type="email" name="email" required>
</p>
<p>
<label>Message:</label>
<textarea name="message" required></textarea>
</p>
<p>
<button type="submit">Submit</button>
</p>
</form>
{% if message %}
<p>{{ message }}</p>
{% endif %}
{% endblock %}
3. 路由函数
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
name = request.form.get('name')
email = request.form.get('email')
message = request.form.get('message')
# 在这里可以做一些数据处理或者存储数据的操作
# ...
message = 'Thank you for your message!'
return render_template('index.html', message=message)
return render_template('index.html')
if __name__ == '__main__':
app.run()
在上面的示例代码中,我们定义了一个contact路由函数,通过request.form.get可以获取表单中提交的数据,然后可以在函数中做一些数据处理或者存储数据的操作,在结束处理后,我们将结果通过render_template函数渲染到index.html模板中。
这就是关于Python中Flask框架Jinja模板入门教程的完整攻略,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的flask框架Jinja 模板入门教程 - Python技术站