1.flask
1.1、flask简介
Flask简介:
Flask诞生于2010年,是用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。
Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。
其WSGI工具箱采用Werkzeug(路由模块),模板引擎则使用Jinja2。这两个也是Flask框架的核心。
Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。
Flask常用扩展包:
. Flask-SQLalchemy:操作数据库;. Flask-migrate:管理迁移数据库;. Flask-Mail:邮件;
· Flask-WTF:表单;
. Flask-Bable:提供国际化和本地化支持,翻译;. Flask-script:插入脚本;
. Flask-Login:认证用户状态;
. Flask-OpenlD:认证;
. Flask-RESTful:开发RESTAPI的工具;
. Flask-Bootstrap:集成前端Twitter Bootstrap框架;. Flask-Moment:本地化日期和时间;
. Flask-Admin:简单而可扩展的管理接口的框架
框架之间的差别
- Django功能大而全,Flask只包含基本的配置
Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。
Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2模板引擎和Werkzeug wSGl工具集,其他很多功能都是以扩展的形式进行嵌入使用。
Flask 比 Django更灵活
Flask在 Django之后发布,现阶段有大量的插件和扩展满足不同需要
Django发布于2005年,Flask创始于2010年年中。
1.启动Flask
from flask import Flask
2.Flask 的Response
1.HTTPResponse 返回字符串""
2.render_template渲染返回模板文件
3.redirect重定向
#Flask特殊封装
4.send_file打开返回文件内容Content-Type:文件类型自动识别的文件类型
5.jsonify返回标准的JSON格式字符串 Content-Type:application/json
3.Flask 的Request
1.Request导入-请求上下文
2.Request.method请求方式HTTP 8种 POST DELETE PUT GET OPTIONS请求跨域 3.Request.path url_root路由地址
4.Request.host获取访问主机地址
#方法:
request.form FormData中的数据to_dict ()直接返回字典数据
request.args URL中的数据
request.data 请求体的原始信息只有在 Content-Type 没有Form b""
request.json 请求头中的content-Type: application/json字典
request.headers 请求头中的信息
request.cookies 请求中Cookie的信息
#坑:
request.values不可触及的地带
4.Flask 中的session
from flask import session
使用session的前提是在application 中加入secret_key
app.secret_key = "$%^&*($#$号^&*个YH &U"
def get session ():
session [ "user"]= 123
交由客户端保管机制
1.开启Session - session [ "user"]= 123
2.session序列化字符串
3.通过secret key进行加密4.通过Cookie―返回客户端
接收session
1.通过Cookie 获取session
2.通过secret_key 解密
3.反序列化字典
4.session
1.2、flask安装环境
使用拟环境安装Flask,可以避免包的混乱和版本的冲突,虚拟环境是Python解释器的副本,在虚拟环境中你可以安装扩展包,为每个程序单独创建的虚拟环境,可以保证程序只能访问虚拟环境中的包。而不会影响系统中安装的全局Python解释器,从而保证全局解释器的整洁。
虚拟环境使用virtualenv创建,可以查看系统是否安装了virtualenv:
$ virtualenv --version
(m369-1) [[email protected] test]$ pip install virtualenv
1.Flask web框架+Helloworld
pip install Flask - 1.1.1
Flask Flask库文件
Jinja2模板渲染库
MarkupSafe 返回安全标签,只要Flask返回模板或者标签时都会依赖MarkupSafe
Werkzeug德文"工具” uWSGI底昙是wSGI Flask项目启动都是基于werkzeug
#三行启动Flask提供服务
from flask import Flask
app = Flask(__name__)
app.run()
启动flask:
D:\pycharm\Python\Python376\python.exe D:/pycharm/Python/Python376/s1.py
* Serving Flask app 's1' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [29/Nov/2021 17:40:57] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [29/Nov/2021 17:40:57] "GET /favicon.ico HTTP/1.1" 404 -
if __name__=='__main__': #当前文件处于脚本状态时运行如下代码
app.run()
1.2.1、创建flask应用
#三行启动Flask提供服务
from flask import Flask #导入flask类创建flask应用对象
app = Flask(__name__) #app = applications
@app.route("/index") #为flask应用对象增加路由
def index(): #与路由绑定的视图函数视图函数名尽可能保持唯一
return "helloWorld"
app.run() #并启动Rlask应用
1.2.2、flask简介-访问模板template
2.Flask 中的Response
1.HTTPResponse ( "Helloworld") "HelloWorld"
2.render ( "html文件") render template ( "HTML文件") #默认存放路径是"templates"
3.redirect ("/home") redirect ("/home)
# 302 HTTP status
# 4xx 错误 客户端
#5xx 错误 服务器
ResponseHeaders 中加入了一个Localtion:http://url
#Flask特殊返回值
4.send_file ( "文件路径") 返回文件
#打开并返回文件内容, 自动识别文件类型,在responseheafers中加入
# Content-Type: 文件类型–*文件类型是可以被客户端识别的文件类型
# 不能识别的类型,下载处理 - 浏览器会下载
5.jsonify ("字符串或数据类型") 返回标准格式的JSON字符串
# Content-Type : application/json==标准格式
# Flask 1.1.1
# return d #暂时不建议使用兼容性
# 直接返回dict时本质上在执行jsonify (d
# API 接口 AJAX.post( {username : 123}) {function(data){obj = data}}
#利用Flask 做一个登录username password
#request?
3.Flask 中的Request
methods= [ "GET","POST"]在添加路由的装饰器中允许请求方式,覆盖
1.request.form 获取FormData中的数据 to_dict () ImmutableMultiDict
2.request.method获取请求方式
3.request.args#获取URL中的数据字符串 get ("key") to_dict ()
4.request.files.get ( "my file")#获取一个 Filestorage Flask文件特殊对象
my_file = request.files.get("my_file") #--->主要配置
new_file = os.path.join("zhgedu", my_file.filename) #--->主要配置
my_file.save(new_file)
#获取数据
5.request.headers
6.request.cookies
7.request.path == request.url_rule
8.request.host == "127.0.0.1:9527"
9.request.host_url == "http://127.0.0.1:9527/"
10.request.json
#特殊提交方式数据获取
# Content-Type : application/json
# request.json获取content-Type:application/json时提交的数据
11.request.data
# Content-Type无法被识别或不包含Form字眼
# request.data获取原始请求体中的数据b""
4.Flask中的session
Session服务器端的键值对
Cookie 客户端的键值对
交由客户端保管机制
开启session:
1.开启Session [username] = 123{
username : 123
}
2.序列化字典==字符串
3.加密字符串secretkey
接受反序列化session:
1.从Cookie 中获取到一个叫session Key 的值
eyJ1c2VyIjoiQWxleGFuZGVyLkRTQi5MaSJ9.YaXG4w.oi9dNDpQxwqVt9M9-7lrOQhz5Ys
2.通过secretKey 解密session
3.反序列化成字典
5.Jinja2:I
{ {}}引用变量数据执行函数
{%%}逻辑代码
#三行启动Flask提供服务
from flask import Flask
from flask import render_template #--->主要配置
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home") #--->主要配置
def home(): #--->主要配置
return render_template("home.html") #--->主要配置
app.run()
/templates/home.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bootstrap 101 Template</title>
</head>
<body>
<h1> 你好, 世界!</h1>
</body>
</html>
1.2.3、redirect跳转
Python/s2.py
-------------
from flask import Flask
from flask import render_template
from flask import redirect #--->redirect重定向 #--->主要配置
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re") #--->主要配置
def re(): #--->主要配置
return redirect("/home") #--->主要配置
app.run()
http://127.0.0.1:5000/re #---->跳转
302 跳转
1.2.4、send_file发送文本
#三行启动Flask提供服务
from flask import Flask
from flask import render_template
from flask import send_file
from flask import redirect #--->redirect重定向
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re")
def re():
return redirect("/home")
@app.route("/get_file")
def get_file():
return send_file("s1.py") #--->主要配置
app.run()
1.2.4.1、send发送图片
from flask import Flask
from flask import render_template
from flask import send_file
from flask import redirect #--->redirect重定向
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re")
def re():
return redirect("/home")
@app.route("/get_file")
def get_file():
return send_file("1.jpg") #--->主要配置
app.run()
1.2.4.2、send发送视频
#三行启动Flask提供服务
from flask import Flask
from flask import render_template
from flask import send_file
from flask import redirect #--->redirect重定向
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re")
def re():
return redirect("/home")
@app.route("/get_file")
def get_file():
#return send_file("1.jpg")
return send_file("2.mp4") #--->主要配置
app.run()
1.2.4.3、send下载程序
from flask import Flask
from flask import render_template
from flask import send_file
from flask import redirect #--->redirect重定向
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re")
def re():
return redirect("/home")
@app.route("/get_file")
def get_file():
return send_file("1.exe")
# return send_file("s1.py")
# return send_file("1.jpg")
# return send_file("2.mp4")
1.2.5、jsonify格式
Python/s2.py
-------------
#三行启动Flask提供服务
from flask import Flask
from flask import render_template
from flask import send_file
from flask import redirect #--->redirect重定向
from flask import jsonify #--->主要配置
app = Flask(__name__)
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re")
def re():
return redirect("/home")
@app.route("/get_file")
def get_file():
# return send_file("1.exe")
# return send_file("s1.py")
return send_file("1.jpg")
# return send_file("2.mp4")
@app.route("/get_json") #--->主要配置
def get_json(): #--->主要配置
d = { #--->主要配置
"name":"Alexander.DSB.li" #--->主要配置
} #--->主要配置
return jsonify(d) #--->主要配置
#return d #--->不建议使用
1.2.5.1修改文件类型
#三行启动Flask提供服务
from flask import Flask
from flask import render_template
from flask import send_file
from flask import redirect #--->redirect重定向
from flask import jsonify
app = Flask(__name__)
#app.default_config
app.config["JSONIFY_MIMETYPE"] = "application/DragonFire" #--->主要配置
@app.route("/index")
def index():
return "helloWorld"
@app.route("/home")
def home():
return render_template("home.html")
@app.route("/re")
def re():
return redirect("/home")
@app.route("/get_file")
def get_file():
# return send_file("1.exe")
# return send_file("s1.py")
return send_file("1.jpg")
# return send_file("2.mp4")
@app.route("/get_json")
def get_json():
d = {
"name":"Alexander.DSB.li"
}
return d
# return jsonify(d)
1.2.6、Flask 做一个登录username password
from flask import Flask ,render_template, request
app = Flask(__name__) #__name__文件名
app.debug = True #开启debug模式,再改动代码会自动重启
@app.route("/login", methods=["GET","POST"]) #405请求方式不被允许
def login():
# 从request中取出请求方式
print(request.method)
#判断请求方式 GET render POST处理
if request.method == "GET":
return render_template("login.html")
if request.method == "POST":
#在Django request.POST取出FoxmData(Form表单)
# 在Flask获取FormData request.forn
print(request.form.get("username"))
print(request.form.to_dict())
return "200 ok"
if __name__ == '__main__':
app.run('0.0.0.0',9527)
192.168.1.103 - - [30/Nov/2021 01:03:54] "POST /login HTTP/1.1" 200 -
POST
123
{'username': '123'}
1.2.6.1、request.url编排方式
1.request.form 获取FormData中的数据 to_dict () ImmutableMultiDict
2.request.method获取请求方式
3.request.args#获取URL中的数据字符串 get ("key") to_dict ()
from flask import Flask ,render_template, request
app = Flask(__name__) #__name__文件名
app.debug = True #开启debug模式,再改动代码会自动重启
@app.route("/login", methods=["GET","POST"]) #405请求方式不被允许
def login():
# 从request中取出请求方式
print(request.method)
#判断请求方式 GET render POST处理
if request.method == "GET":
# 在Django request.GET取出URL中的参数
# #在Flask获取URL中的参数
print(request.url) #--->请求地址 #--->主要配置
print(request.values) #接受所有(get post)请求中的数据 #--->主要配置
print(request.url_charset) #URL编码方式 #--->主要配置
print(request.url_root) #请求地址完整请求地址host #--->主要配置
print(request.url_rule) #请求路由地址
print(request.args.to_dict()) #---> {'id': '1'}
print(request.args.get("id")) #-->获取 URL中的数据为 1
return render_template("login.html")
if request.method == "POST":
#在Django request.POST取出FoxmData(Form表单)
# 在Flask获取FormData request.forn
print(request.form.get("username"))
print(request.form.to_dict())
return "200 ok"
if __name__ == '__main__':
app.run('0.0.0.0',9527)
执行结果:
GET
http://10.8.65.183:9527/login?id=1
CombinedMultiDict([ImmutableMultiDict([('id', '1')])])
utf-8
http://10.8.65.183:9527/
/login
{'id': '1'}
1.2.6.2、提交文件1
from flask import Flask ,render_template, request
app = Flask(__name__) #__name__文件名
app.debug = True #开启debug模式,再改动代码会自动重启
@app.route("/login", methods=["GET","POST"]) #405请求方式不被允许
def login():
# 从request中取出请求方式
print(request.method)
#判断请求方式 GET render POST处理
if request.method == "GET":
# 在Django request.GET取出URL中的参数
# #在Flask获取URL中的参数
print(request.url) #--->请求地址
print(request.values) #接受所有(get post)请求中的数据
print(request.url_charset) #URL编码方式
print(request.url_root) #请求地址完整请求地址host
print(request.url_rule) #请求路由地址
#print(request.values.to_dict())
# print(request.args.to_dict()) #获得一个字典
# print(request.args.get("id")) #-->获取 URL中的数据
return render_template("login.html")
if request.method == "POST":
#在Django request.POST取出FoxmData(Form表单)
# 在Flask获取FormData request.forn
# print(request.form.get("username"))
# print(request.form.to_dict())
# 在Django request.GET取出URL中的参数
# 在Flask 获取URL中的参数
print(request.files) # 提交文件 #--->主要配置 ,必须在post中
print(request.files.get("my_file"))
return "200 ok"
/templates/login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> 用户登录</h1>
<form action="" method="post" enctype="multipart/form-data"> \\提交方式 #multipart/form-data多功能 #--->主要配置
<p>username: <input type="text" name="username"></p>
<p><input type="file" name="my_file"></p> \\提交文件 #--->主要配置
<input type="submit" value="登录">
<form>
</body>
</html>
执行结果:
POST
10.8.65.183 - - [30/Nov/2021 10:36:06] "POST /login?id=1 HTTP/1.1" 200 -
ImmutableMultiDict([('my_file', <FileStorage: '1.jpg' ('image/jpeg')>)])
<FileStorage: '1.jpg' ('image/jpeg')>
1.2.6.3、指定目录上载文件
from flask import Flask ,render_template,request
import os #--->主要配置
app = Flask(__name__) #__name__文件名
app.debug = True #开启debug模式,再改动代码会自动重启
@app.route("/login", methods=["GET","POST"]) #405请求方式不被允许
def login():
# 从request中取出请求方式
print(request.method)
#判断请求方式 GET render POST处理
if request.method == "GET":
# 在Django request.GET取出URL中的参数
# #在Flask获取URL中的参数
print(request.url) #--->请求地址
print(request.values) #接受所有(get post)请求中的数据
print(request.url_charset) #URL编码方式
print(request.url_root) #请求地址完整请求地址host
print(request.url_rule) #请求路由地址
#print(request.values.to_dict())
# print(request.args.to_dict()) #获得一个字典
# print(request.args.get("id")) #-->获取 URL中的数据
return render_template("login.html")
if request.method == "POST":
#在Django request.POST取出FoxmData(Form表单)
# 在Flask获取FormData request.forn
# print(request.form.get("username"))
# print(request.form.to_dict())
# 在Django request.GET取出URL中的参数
# 在Flask 获取URL中的参数
print(request.files) # 提交文件 #--->主要配置
print(request.files.get("my_file")) #--->主要配置
# 获取一个FileStorage Flask文件特殊对象
my_file = request.files.get("my_file") #--->主要配置
new_file = os.path.join("zhgedu", my_file.filename) #--->主要配置
#my_file.save("zhgedu.jpg") #保存图片
my_file.save(new_file) #--->主要配置
return "200 ok"
if __name__ == '__main__':
app.run('0.0.0.0',9527)
1.2.6.4、登录实现跳转
from flask import Flask ,render_template,request,session
from flask import redirect #--->主要配置
import os
app = Flask(__name__) #__name__文件名
app.debug = True #开启debug模式,再改动代码会自动重启
@app.route("/login", methods=["GET","POST"]) #405请求方式不被允许
def login():
# 从request中取出请求方式
print(request.method)
#判断请求方式 GET render POST处理
if request.method == "GET":
# 在Django request.GET取出URL中的参数
# #在Flask获取URL中的参数
# print(request.url) #--->请求地址
# print(request.values) #接受所有(get post)请求中的数据
# print(request.url_charset) #URL编码方式
# print(request.url_root) #请求地址完整请求地址host
# print(request.url_rule) #请求路由地址
#print(request.values.to_dict())
# print(request.args.to_dict()) #获得一个字典
# print(request.args.get("id")) #-->获取 URL中的数据
return render_template("login.html")
if request.method == "POST":
#在Django request.POST取出FoxmData(Form表单)
# 在Flask获取FormData request.forn
# print(request.form.get("username"))
# print(request.form.to_dict())
# 在Django request.GET取出URL中的参数
# 在Flask 获取URL中的参数
# print(request.files) # 提交文件
# print(request.files.get("my_file"))
# 获取一个FileStorage Flask文件特殊对象
# my_file = request.files.get("my_file")
# new_file = os.path.join("zhgedu", my_file.filename)
# my_file.save(new_file)
#my_file.save("zhgedu.jpg") #保存图片
#获取数据
# request.headers
# request.cookies
# request.path == request.url_rule
# request.host == "127.0.0.1:9527"
# request.host_url == "http://127.0.0.1:9527/"
#特殊提交方式数据获取
#content-type: application/json
# request. json获取Content-Type : application/json时提交的数据
# Content-Type无法被识别或不包含Form字眼
# request.data获取原始请求体中的数据b""
if request.form.get("username") == "123": #--->主要配置
return redirect("/") #跳转 #--->主要配置
@app.route("/") #--->主要配置
def index(): #--->主要配置
return render_template("index.html") #--->主要配置
/templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bootstrap 101 Template</title>
</head>
<body>
<h1> 你好, 世界!zhgedu</h1>
</body>
</html>
1.2.7、session登录需要密码
Python/s2.py
-------------
from flask import Flask ,render_template,request
from flask import redirect
from flask import session #--->主要配置
import os
app = Flask(__name__) #__name__文件名
app.secret_key = "123456" #--->主要配置
app.debug = True #开启debug模式,再改动代码会自动重启
@app.route("/login", methods=["GET","POST"]) #405请求方式不被允许
def login():
# 从request中取出请求方式
print(request.method)
#判断请求方式 GET render POST处理
if request.method == "GET":
# 在Django request.GET取出URL中的参数
# #在Flask获取URL中的参数
# print(request.url) #--->请求地址
# print(request.values) #接受所有(get post)请求中的数据
# print(request.url_charset) #URL编码方式
# print(request.url_root) #请求地址完整请求地址host
# print(request.url_rule) #请求路由地址
#print(request.values.to_dict())
# print(request.args.to_dict()) #获得一个字典
# print(request.args.get("id")) #-->获取 URL中的数据
return render_template("login.html")
if request.method == "POST":
#在Django request.POST取出FoxmData(Form表单)
# 在Flask获取FormData request.forn
# print(request.form.get("username"))
# print(request.form.to_dict())
# 在Django request.GET取出URL中的参数
# 在Flask 获取URL中的参数
# print(request.files) # 提交文件
# print(request.files.get("my_file"))
# 获取一个FileStorage Flask文件特殊对象
# my_file = request.files.get("my_file")
# new_file = os.path.join("zhgedu", my_file.filename)
# my_file.save(new_file)
#my_file.save("zhgedu.jpg") #保存图片
#获取数据
# request.headers
# request.cookies
# request.path == request.url_rule
# request.host == "127.0.0.1:9527"
# request.host_url == "http://127.0.0.1:9527/"
#特殊提交方式数据获取
#content-type: application/json
# request. json获取Content-Type : application/json时提交的数据
# Content-Type无法被识别或不包含Form字眼
# request.data获取原始请求体中的数据b""
if request.form.get("username") == "Alexander.DSB.Li": #--->主要配置
session["user"] = request.form.get("username") #--->主要配置
return redirect("/") #跳转
@app.route("/")
def index():
print(session.get("user")) #--->主要配置
return render_template("index.html")
if __name__ == '__main__':
app.run('0.0.0.0',9527)
1.2.8、{{传参}}
Python/s3.py
-------------
from flask import Flask ,render_template
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'Old', 'age': 38, 'gender': '中'} #--->主要配置
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 38, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
#1.查看STUDENT放在studentinfo页面
@app.route("/stu") #--->主要配置
def stu():
return render_template("stuinfo.html", stu_info = STUDENT) #--->主要配置
if __name__ == '__main__':
app.run('0.0.0.0',9528)
/template/stuinfo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }} #--->主要配置
</body>
</html>
1.2.8.1、stu_info.未知(传参创表)
Python/s3.py
-------------
from flask import Flask ,render_template #--->主要配置
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'zhgedu', 'age': 26, 'gender': 'man'} #--->主要配置
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 38, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
#1.查看STUDENT放在studentinfo页面
@app.route("/stu")
def stu():
return render_template("stuinfo.html", stu_info = STUDENT)
if __name__ == '__main__':
app.run('0.0.0.0',9528)
/template/stuinfo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }}
<table border="2px"> #--->主要配置
<tr> #--->主要配置
<td>name</td> #--->主要配置
<td>age</td> #--->主要配置
<td>gender</td> #--->主要配置
</tr> #--->主要配置
<tr> #--->主要配置
<td>{{ stu_info.name }}</td> #--->主要配置
<td>{{ stu_info.get("age") }}</td> #--->主要配置
<td>{{ stu_info["gender"] }}</td> #--->主要配置
</tr> #--->主要配置
</table> #--->主要配置
</body>
</html>
1.2.8.2、
Python/s3.py
-------------
from flask import Flask ,render_template
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'zhgedu', 'age': 26, 'gender': 'man'}
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 38, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
#1.查看STUDENT放在studentinfo页面
@app.route("/stu")
def stu():
return render_template("stuinfo.html", stu_info = STUDENT,stu_list = STUDENT_LIST)
if __name__ == '__main__':
app.run('0.0.0.0',9528)
/template/stuinfo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_info %}
<tr>
<td>{{ stu_info.name }}</td>
<td>{{ stu_info.get("age") }}</td>
<td>{{ stu_info["gender"] }}</td>
</tr>
{% endfor %}
</table>
{{ stu_list }} #--->主要配置
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ stu.name }}</td>
<td>{{ stu.get("age") }}</td>
<td>{{ stu["gender"] }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
1.2.8.2.1、
Python376/s3.py
-----------------
from flask import Flask ,render_template
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'zhgedu', 'age': 26, 'gender': 'man'}
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 37, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
#1.查看STUDENT放在studentinfo页面
@app.route("/stu")
def stu():
return render_template("stuinfo.html", stu_info = STUDENT,stu_list = STUDENT_LIST,stu_dict = STUDENT_DICT) #--->主要配置
if __name__ == '__main__':
app.run('0.0.0.0',9528)
/template/stuinfo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_info %}
<tr>
<td>{{ stu_info.name }}</td>
<td>{{ stu_info.get("age") }}</td>
<td>{{ stu_info["gender"] }}</td>
</tr>
{% endfor %}
</table>
{{ stu_list }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ stu.name }}</td>
<td>{{ stu.get("age") }}</td>
<td> {% if stu["gender"] != "男" and stu["gender"] != "女" %}
李昊
{% else %}
{{ stu["gender"] }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{{ stu_dict }} #--->主要配置
{% for foo in stu_dict %}
{{ stu_dict[foo].get("name") }}
{{ stu_dict[foo]["age"] }}
{{ stu_dict[foo].gender }}
{% endfor %}
<table border="2px"> #--->主要配置
<td> {% for foo ,item in stu_dict.items() %}
{{ foo }}
{{ item.name }}
{% endfor %}
</td>
</table>
</body>
</html>
1.2.8.3、if _else判断
Python/s3.py
-------------
from flask import Flask ,render_template
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'zhgedu', 'age': 26, 'gender': 'man'}
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 37, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
#1.查看STUDENT放在studentinfo页面
@app.route("/stu")
def stu():
return render_template("stuinfo.html", stu_info = STUDENT,stu_list = STUDENT_LIST,stu_dict = STUDENT_DICT)
if __name__ == '__main__':
app.run('0.0.0.0',9528)
/template/stuinfo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_info %}
<tr>
<td>{{ stu_info.name }}</td>
<td>{{ stu_info.get("age") }}</td>
<td>{{ stu_info["gender"] }}</td>
</tr>
{% endfor %}
</table>
{{ stu_list }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ stu.name }}</td>
<td>{{ stu.get("age") }}</td>
<td> {% if stu["gender"] != "男" and stu["gender"] != "女" %} #->主要配置
李昊
{% else %}
{{ stu["gender"] }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
1.2.8.4、global全局传参
Python/s3.py
-------------
from flask import Flask ,render_template
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'zhgedu', 'age': 26, 'gender': 'man'}
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 37, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
@app.template_global() #--->主要配置
def ab(a,b): #--->主要配置
return a+b #--->主要配置
#1.查看STUDENT放在studentinfo页面
@app.route("/stu")
def stu():
return render_template("stuinfo.html", stu_info = STUDENT,stu_list = STUDENT_LIST,stu_dict = STUDENT_DICT)
if __name__ == '__main__':
app.run('0.0.0.0',9528)
/template/stuinfo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_info %}
<tr>
<td>{{ stu_info.name }}</td>
<td>{{ stu_info.get("age") }}</td>
<td>{{ stu_info["gender"] }}</td>
</tr>
{% endfor %}
</table>
{{ stu_list }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ stu.name }}</td>
<td>{{ stu.get("age") }}</td>
<td> {% if stu["gender"] != "男" and stu["gender"] != "女" %}
李昊
{% else %}
{{ stu["gender"] }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{{ stu_dict }}
{% for foo in stu_dict %}
{{ stu_dict[foo].get("name") }}
{{ stu_dict[foo]["age"] }}
{{ stu_dict[foo].gender }}
{% endfor %}
<table border="2px">
<td> {% for foo ,item in stu_dict.items() %}
{{ foo }}
{{ item.name }}
{% endfor %}
</td>
</table>
<p> {{ ab(22,2) }} </p> #--->主要配置
</body>
</html>
1.2.8.5、macro_定义标签
#Python/s3.py
#-------------
from flask import Flask ,render_template
app = Flask(__name__) #__name__文件名
app.debug = True
STUDENT = {'name': 'zhgedu', 'age': 26, 'gender': 'man'}
STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
]
STUDENT_DICT = {
1: {'name': 'Old', 'age': 37, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
@app.template_global()
def ab(a,b):
return a+b
#1.查看STUDENT放在studentinfo页面
@app.route("/stu")
def stu():
return render_template("stuinfo.html", stu_info = STUDENT,stu_list = STUDENT_LIST,stu_dict = STUDENT_DICT)
if __name__ == '__main__':
app.run('0.0.0.0',9528)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
{{ stu_info }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_info %}
<tr>
<td>{{ stu_info.name }}</td>
<td>{{ stu_info.get("age") }}</td>
<td>{{ stu_info["gender"] }}</td>
</tr>
{% endfor %}
</table>
{{ stu_list }}
<table border="2px">
<tr>
<td>name</td>
<td>age</td>
<td>gender</td>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ stu.name }}</td>
<td>{{ stu.get("age") }}</td>
<td> {% if stu["gender"] != "男" and stu["gender"] != "女" %}
李昊
{% else %}
{{ stu["gender"] }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{{ stu_dict }}
{% for foo in stu_dict %}
{{ stu_dict[foo].get("name") }}
{{ stu_dict[foo]["age"] }}
{{ stu_dict[foo].gender }}
{% endfor %}
<table border="2px">
<td> {% for foo ,item in stu_dict.items() %}
{{ foo }}
{{ item.name }}
{% endfor %}
</td>
</table>
<p> {{ ab(22,2) }} </p>
{% macro my_input(ty,na) %} #--->主要配置
请输入用户名 -> <input type="{{ ty }}" name="{{ na }}"> #--->主要配置
{% endmacro %} #--->主要配置
<p>这就是我自己创造的input标签: #--->主要配置
{{ my_input("text","username") }} #--->主要配置
{{ my_input("password", "pass") }} #--->主要配置
{{ my_input("file", "myfile") }} #--->主要配置
</p> #--->主要配置
</body>
</html>
标签:__,name,stu,python,app,request,flask,Flask,101
From: https://www.cnblogs.com/zikang/p/18060559