网站首页 > 技术文章 正文
模板和继承
观察下方两个页面,有什么区别呢?
按照之前学习的知识,左边的网页直接 return 文字就可以了,而右边的网页通过render_template方法,方法里的参数是一个网页,其实就是模板,那什么是模板呢?
模板其实是一个包含响应文本的文件,通过render_template方法来渲染。
我们再来观察下面两个网页:这两个网页有相同的头部和尾部,但是中间有不同的内容。
它们都有共同的代码,相似之处很多,为了不重复书写代码,我们引入模板继承。什么是模板继承呢?
比如说现在有三个网页,它们结构相同,分别是头部,内容和尾部,那么针对这样的情况,我们可以把一些公用的代码单独抽取出来放到一个父模板中,以后子模板直接继承就可以使用了。这样我们也不要书写很多重复性的代码,而且以后修改起来也会很方便。那模板继承该怎么用呢?
模板变量
我们知道,好多游戏开始的界面,都会有关于这款游戏的一些信息,比如说,版本号,文件大小,和更新时间等等。那这些内容是固定的吗?显然不是,比如游戏什么时候更新了,这个更新时间也会重置为更新时间。那这个具体是怎么做到的呢?
那如何把传递的模板变量在前端页面中显示出来呢?可以通过两对大括号来获取变量的值。
info = {'version': 'Ver.0.2.94.1', 'file_length': '1.95G', 'update_time': '2019-1-29'}
@app.route('/sdo', methods=['GET'])
def sdo():
# 在下方写你的代码:返回模板变量
return render_template('sdo.html', info=info)
app.run(host='127.0.0.1', port=8001)
<p>版本号:</p>
<p>文件大小:</p>
<p>更新时间:</p>
模板if
有的游戏开始界面,信息有时候会显示,有时候不会显示,这个通过模板变量怎么做?同一个位置,怎么根据需要显示不同的值呢?
# info = '【资料站开张福利】快来和熊猫菌一起玩吧~'
info = ''
@app.route('/yrzx')
def yrzx():
# 在下方写你的代码:返回模板变量
return render_template('yrzx.html', info = info)
app.run(host='127.0.0.1', port=8002)
暂无
十二星座和运势项目
Flask参数配置
- app = Flask(__name__):__name__是以当前所在的目录为根目录
- static_url_path静态文件访问路径,可以不传,默认为:/ + static_folder
- static_folder静态文件存储的文件夹,可以不传,默认为 static
- template_folder模板文件存储的文件夹,可以不传,默认为 templates
自定义配置信息
Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。
读取
- app.config.get(name)
- app.config[name]
# 1.使用配置文件
app.config.from_pyfile('config.cfg')
# 2.使用对象配置参数
class DefaultConfig:
USERNAME = 'cat'
PASSWD = '123456'
class Config(DefaultConfig):
DEBUG = True
SCORE = 100
app.config.from_object(Config)
# 3.config直接操作字典对象
app.config['LEVEL'] = 1
run参数
# 启动服务器
# app.run()
# app.run(host='127.0.0.1', port=8000)
# app.run(host='192.168.92.143', port=8000)
app.run(host='0.0.0.0', port=8000)
总体思路
实现步骤
项目目录结构
展现十二星座主页面
# 导入 Flask 类
from flask import Flask, render_template, request
import tools
# 创建app应用
app = Flask(__name__)
# 开启debug模式
app.debug = True
# 创建视图函数,注册路由/star
@app.route('/star')
def star():
return render_template('star_home.html')
# 启动服务器
app.run(host='127.0.0.1', port=8002)
实现星座页面
- 数据获取:tools.py
- 这些星座数据获取到之后,要作为模版变量传递给模板文件star_home.html,并通过模板变量取值获取各个星座的图片地址。注意,取值的时候,要先从列表中取出字典,如果是第1个星座,那取的就是列表中下标为0的元素,第2个星座,那就是下标为1的元素,依次类推,取出字典后,再从字典中取出image的值。
app.py
@app.route('/star')
def star():
stars = tools.star_list()
return render_template('star_home.html', stars=stars)
star_home.html
<div class="star-item">
<a href="/star/fortune?star=pisces"><img src=""></a>
</div>
实现具体星座页面
- 点击某个星座之后,会跳转至/star/fortune,即某个星座的运势,因此需要一个视图函数接收,且获取star参数;
- 获取到具体星座信息,将star参数传递至tools.py中的方法,获取相关星座的运势数据;
- 将数据传递至前端,显示出来。
<div class="title">
<span class="photo">
<!--在下方写你的代码:获取星座图片photo -->
<img src="">
</span>
<span class="text">
<!--在下方写你的代码:星座名称name-->
<h4></h4>
<!--星座对应的日期date-->
<small></small>
<!--星座简介introduce-->
<p></p>
</span>
</div>
猜你喜欢
- 2025-05-02 python文件读写造作最佳实践——with语句管理文件资源
- 2025-05-02 「python+django」django中使用jinja2模板
- 2025-05-02 docopt,一个超厉害的 Python 库!
- 2025-05-02 一文带您了解Jinja2:探索Python模板引擎
- 2025-05-02 python优雅执行SQL模板语句(pycharm执行sql)
- 2025-05-02 程序员简历例句—范例Java、Python、C++模板
- 2025-05-02 快速生成定制化的Word文档:Python实践指南
- 2025-05-02 jinjia2:一个超级模版Python库(python jinja2模板)
- 2025-05-02 Python | Django 模板 template(python模板方法)
- 05-27程序员用 Python 爬取抖音高颜值美女
- 05-27YOLO v3、FaceNet和SVM的人脸检测识别系统源码(python)分享
- 05-27「工具推荐」世界上最简单的人脸识别库 44.7 star
- 05-27开源人脸识别系统源码推荐
- 05-27Go 人脸识别教程
- 05-27Python 深度学习之人脸识别(yolo+facenet)
- 05-27简单的Py人脸识别
- 05-27Python编程 - 基于OpenCV实现人脸识别(实践篇)爬虫+人脸识别
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 82℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)