Flask框架学习笔记之模板操作实例详解
作者:Cytues 发布时间:2023-10-16 12:40:05
标签:Flask,模板
本文实例讲述了Flask框架学习笔记之模板操作。分享给大家供大家参考,具体如下:
flask的模板引擎是Jinja2。
引入模板的好处是增加程序的可读性和易维护性,从而不用将一堆html代码塞在视图函数中。
还是以hello world为例。最基础的调用模板修饰文本。
# 根网址
@app.route('/')
def index():
# return render_template("index.html")
# 可以给模板传入文本content修饰
content = "Hello World!"
return render_template("index.html", content = content)
index模板,用{{}}
表示变量。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--<h1>Hello World!</h1>></!-->
<h1>{{ content }}</h1>
</body>
</html>
这里定义一个类以传入变量。
class User(object):
def __init__(self, user_id, user_name):
self.user_id = user_id
self.user_name = user_name
传参
# 通过调用类的实例方法给模板传递参数修饰
@app.route('/user')
def user_index():
user = User(520, "loli")# user_id, user_name
return render_template("user_index.html", user=user)
user_index模板,仅显示user_name。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello {{ user.user_name }}</h1>
</body>
</html>
在模板中实现if语句
# 在模板中使用if语句
@app.route('/query_user/<user_id>')
def query_user(user_id):
user = None
# 如果传入的id为520则调用实例
if int(user_id) == 520:
user = User(520, 'loli')
return render_template("user_id.html", user=user)
user_id模板,用{% %}
包裹if语句,若user不为None(也就是传入了name),则显示if下语句,否则显示else下语句。
最后一定要加上{% endif %}表示判断语句结束。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if user %}
<h1>hello {{ user.user_name }}</h1>
{% else %}
<h1>no this user</h1>
{% endif %}
</body>
</html>
在模板中使用for循环语句
@app.route('/users')
def user_list():
users = []
for i in range(1, 11):
user = User(i, "loli" + str(i))
users.append(user)# 将user添加到users
return render_template("user_list.html", users = users)# 在模板中修饰users
user_list模板,同样的,for循环语句也要用{% %}包裹起来,需要用{% endfor %}
表示for循环结束。这里传入id和name两个参数。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for user in users %}
{{ user.user_id }} -- {{ user.user_name }}<br>
{% endfor %}
</body>
</html>
模板的继承。模板继承的初衷也是为了代码更加简单,更易维护,将相同部分的代码提到一个基类模板,有点类似于类的继承。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<h1>I love you {{ user.user_name }}</h1>
</div>
{% block content %}
{% endblock %}
<div>
<h1>So much!</h1>
</div>
</body>
</html>
用<div>圈起来的是不可变的父模板,可改动添加的部分在{% block content %}
和{% endblock %}
之间。
子模版,用{% extends "父模板" %}
表示从父模板继承了代码。在{% block content %}
和{% endblock %}
之间添加内容。
{% extends "base.html" %}
{% block content %}
<h2>more than anyone</h2>
{% endblock %}
{% extends "base.html" %}
{% block content %}
<h2>more than anything</h2>
{% endblock %}
调用
# 模板继承1
@app.route('/one')
def one_base():
user = User(520, 'loli')
return render_template("one_base.html", user=user)
# 模板继承2
@app.route('/two')
def two_base():
user = User(520, 'loli')
return render_template("two_base.html", user=user)
可以看到子模版继承了题头和尾部,中间为子模版添加的内容。
代码
#-*- coding:utf-8 -*-
from flask import Flask, render_template# 导入render_template以使用模板
# 定义一个models导入一个有id和name的类
from models import User
app = Flask(__name__)
# 根网址
@app.route('/')
def index():
# return render_template("index.html")
# 可以给模板传入文本content修饰
content = "Hello World!"
return render_template("index.html", content = content)
# 通过调用类的实例方法给模板传递参数修饰
@app.route('/user')
def user_index():
user = User(520, "loli")
return render_template("user_index.html", user=user)
# 在模板中使用if语句
@app.route('/query_user/<user_id>')
def query_user(user_id):
user = None
if int(user_id) == 520:
user = User(520, 'loli')
return render_template("user_id.html", user=user)
# 在模板中使用for循环语句
@app.route('/users')
def user_list():
users = []
for i in range(1, 11):
user = User(i, "loli" + str(i))
users.append(user)
return render_template("user_list.html", users = users)
# 模板继承1
@app.route('/one')
def one_base():
user = User(520, 'loli')
return render_template("one_base.html", user=user)
# 模板继承2
@app.route('/two')
def two_base():
user = User(520, 'loli')
return render_template("two_base.html", user=user)
if __name__ == '__main__':
app.run()
希望本文所述对大家基于flask框架的Python程序设计有所帮助。
来源:https://blog.csdn.net/qq_41805514/article/details/80766289
0
投稿
猜你喜欢
- 问题描述字符串本身作为 bytess = '\xe4\xbd\xa0\xe5\xa5\xbd'解决方案s.encode(
- 缩略图在很多时候我们都需要将图片按照同比例缩小有利于存储 但是一张张手动去改的话太麻烦了 今天我们就用python实现一个简单的将一个文件夹
- 本文实例讲述了Python编程实现数学运算求一元二次方程的实根算法。分享给大家供大家参考,具体如下:问题:请定义一个函数quadratic(
- 我要说的内容都是非常基础的内容,高手就免看了,如果看了欢迎给点意见啊。新手或者对低层还不是很了解的人可以看看,帮助理解与记忆。XMLHttp
- //创建组件 function createobj() { if (window.ActiveXObject) { return(new A
- 如何提高SQL Server数据库的性能,该从哪里入手呢?笔者认为,该遵循从外到内的顺序,来改善数据库的运行性能。如下图: 第一层
- 传入参数一个,为元素的id值或元素本身,返回为元素的真实背景色值(字符串)。 值得一提的是IE里面返回的是16进制的值,而Mozi
- 如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。用下列方法可以强制服务器启用新的更
- 本文实例讲述了Python 多线程,threading模块,创建子线程的两种方式。分享给大家供大家参考,具体如下:GIL(全局解释器锁)是C
- 前言这篇文章主要介绍了Go语言使用swagger生成接口文档的方法,希望能够对大家的学习或工作具有一定的帮助,需要的朋友可以参考下。在前后端
- 代码如下:# -*- coding: utf-8 -*-#!/usr/bin/python# filename: todo.py# code
- 本文实例讲述了python日期相关操作。分享给大家供大家参考,具体如下:用 Python 做项目时,经常会遇到与日期转换相关,日期计算相关的
- 一、ASPJPEG文字水印对图片描边:程序代码: <% Set Jpeg = Se
- 自定义过滤器就是有一个或两个参数的Python函数: (输入)变量的值  
- 本文实例讲述了php验证session无效的解决方法。分享给大家供大家参考。具体方法如下:一、问题今天在配置 apache+php环境时折腾
- 本文实例讲述了Python基于pillow判断图片完整性的方法。分享给大家供大家参考,具体如下:1、安装第三方库。pip install p
- 最近心血来潮加上有点闲情,动手写了第一个JavaScript版的俄罗斯方块Easy Tetris.先上Easy Tetris俄罗斯方块游戏截
- SESSION会话开启时,会首先发送一个对浏览器的唯一标识session_id的cookie(名字为PHPSESSID可以通过session
- 一、 了解postman1. 什么是postman?------ 软件测试用来做接口测试的工具。2. 如何下载postman--
- 一直以来,每次调用Ajax方法都需要创建一次 Microsoft.XMLHTTP 对象,今天在使用Ajax技术做一个类似聊天室的