首页 > 其他分享 >两天学会flask(五)---模板(20分钟)

两天学会flask(五)---模板(20分钟)

时间:2023-04-23 09:13:29浏览次数:40  
标签:20 flask app welcome --- html template 模板

flask框架并没有实现自己的模板,而是使用Jinja2模板引擎,通过render_template函数返回一个html文件,这些html文件默认存储在项目根目录下的tempates文件夹中,这个目录是可以自定义的,创建Flask对象时,通过template_folder来设置。

from flask import Flask, render_template

app = Flask(__name__, template_folder='your_folder')

个人观点,使用模板,帮助我们解决了两个重要事情

  1. 代码复用
  2. 网页内容动态显示

一个网站有几百或上千个网页,它们每一个都可能有上千行html代码,这些代码有许多是相同的,或者说,这些网页可以共用一些代码。使用模板技术,可以将那些可共用的代码放在基础模板里,其他的网页可以继承这个基础模板,也可以用include的方式加载进来。

一个网站,同一个url,不同的人访问,显示的内容会不同,这些不同的内容可能是登录用户的个人信息,显然,不同的人有不同的信息,但所打开的网页url是相同的。想要实现这一点,可以使用ajax技术,前端页面通过ajax向后端发送请求,后端返回用户的具体信息。使用模板,则可以不必使用ajax在前端请求数据,在使用render_template返回html时,会将用户的信息一起返回,由模板引擎根据用户的信息对html进行渲染,以达到相同的效果。

由于我本人专注于后端开发,对于前端html,js等技术的了解不够深入,因此上面这两段内容均是我一家之言,如果有理解的不正确或是肤浅的地方,请各路大神指正。

下面的示例,我将向你展示如何使用这项技术,将后端的数据放到前端展示,下面是项目的结构示意

flask_demo/
├── __init__.py
├── app.py
└── templates
    └── welcome.html

app.py 的内容:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/welcome')
def welcome():
    return render_template('welcome.html', name='小明')

app.run(port=5500)

welcome.html的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>北京欢迎你</title>
</head>
<body>
    <p>北京欢迎你,</p>
</body>
</html>

运行app.py 脚本,服务启动后,在浏览器访问网址 http://127.0.0.1:5500/welcome, 你将看到如下的内容

北京欢迎你,小明

被小明替换, 这便是模板技术,当然,这只是最简单的应用,模板不只是能够进行一些变量的替换,还可以像写python代码一样在html写if 语句, for循环,进行更加复杂的操作,模板这个方向,我会专门写一章节的内容。

标签:20,flask,app,welcome,---,html,template,模板
From: https://www.cnblogs.com/joyware/p/17345447.html

相关文章

  • Vicuna-13B, an open-source chatbot trained by fine-tuning LLaMA
    一、项目背景WeintroduceVicuna-13B,anopen-sourcechatbottrainedbyfine-tuningLLaMAonuser-sharedconversationscollectedfromShareGPT.PreliminaryevaluationusingGPT-4asajudgeshowsVicuna-13Bachievesmorethan90%* qualityofOpenAIChatGPT......
  • Solution Set - “卷起击碎定论的漩涡”
    目录0.「CF1788F」XOR,Tree,andQueries1.「CF1815F」OHNO1(-2-3-4)2.「CF1787F」InverseTransformation3.「CF1797F」LiHuaandPath4.「CF1815B」SumGraph5.「AGC022C」RemainderGame6.「CTT2021」「洛谷P8986」基因编辑7.「CTT2021」「洛谷P8985」魔塔OL⭐......
  • 2023/4/22
    交换两个整数次序 #include<iostream>usingnamespacestd;voidswap(int&a,int&b){intt=a;a=b;b=t; }intmain(){intx=5,y=10;cout<<"x="<<x<<"y="<<y<<endl;swap(x,y);cout<<"x="<<......
  • 2023GPLT团体程序设计天梯赛 记录
    排名个人全国排名: 4391(共1w7)个人全校排名: 第3名个人21级排名: 第2名(第一名是ztm哥,顶级混分手,狂砍181分)队伍排名:河南省 第23,银牌,话说为啥去年我会写第九(分数得分:161题目情况:L1-01L1-02L1-03L1-04L1-05L1-06L1-07L1-08L2-01L2-02......
  • python3-hex
    hex函数,参数可以是一个int整数或一个bytes类型元素,转为0x的十六进制字符串形式withopen(file='J:/新建文本文档.txt',mode='rb')asf:s=f.read()print(type(s),s)result=''foriins:result+=hex(i)print(result)<class'......
  • Blender-介绍
    一、介绍Blender官网Blender中文参考手册Blender-shortcut主要功能Blender是一个完整集成的3D创作套件,提供了大量的基础工具,包括建模、渲染、动画&绑定、视频编辑、视觉效果、合成、贴图,以及多种类型的模拟。跨平台,使用了OpenGL的GUI可以在所有主流平台上......
  • 2023.4.22
    1#include<iostream>2usingnamespacestd;3intmain()4{5doublenum,profit=0;6cout<<"请输入收入金额:"<<endl;7cin>>num;8if(num<3500)9{10cout<<"应征收税为0元"<......
  • SQL Server2022以及SQL Server Management Studio(SSMS)的下载和安装
    1.下载安装包:浏览搜索SQLSERVER2022 2.进入页面后,点击下载 3.页面下拉,选择安装windows版,点击选择安装设置 4.选择在window上安装 5.填写自己信息:姓名手机号邮箱等;(这里可以随便填) 6.点击Downloadnow,等待下载完成 7.下载之后打开下载文件,选择下载介质 8.......
  • C语言--数组1
    一维数组和二维数组【一维数组的创建和初始化】数组的创建数组是一组相同类型元素的集合。数组的初始化数组在创建时不指定数组的大小就要初始化。数组的元素个数根据初始化内容来确定。但对于下面代码要区分,其在内存中如何分配。chararr1[]="abc";chararr2[3]={'a','b','c'......
  • OpenCV图像纹理(20)
    LBP描述LBP(LocalBinaryPattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T.Ojala,M.Pietikäinen,和D.Harwood在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征计算过程原始的LBP算子定义......