什么叫轻量级,这就叫轻量级(战术后仰)
启动一个输出helloworld的Web应用
环境:
进入虚拟环境,用pip安装flask
pip install flask
编写代码:
建一个用来放flask运行代码的文件夹,并新建一个app.py用来写代码
from flask import Flask
app = Flask(__name__) #创建一个swgi应用
@app.route('/') #声明调用helloWorld的地址栏后缀
def helloWorld():
return "HelloWorld" #返回一段文字 不过这里不是html元素,仅仅是一段文字而已
if __name__=='__main__':
app.run(port = 19997, debug = True) #设置端口和启动模式
然后用cmd启动app:
打开浏览器 录入 就看到了
(背景绿色是浏览器插件,不是我写的代码有哪里修改了背景的!)
(这比tomcat实现少好多代码和步骤啊(抱头)不过其实tomcat功能和支持还是多一些,两码事啊两码事)
通过地址栏读取处理与返回信息:
from flask import Flask
app = Flask(__name__) #创建一个swgi应用
@app.route('/')
def helloWorld():
return "HelloWorld"
@app.route('/user/<name>,<age>')#用get获取地址栏信息返回对应内容
def decide_user(name,age):
if int(age)>=18:
return ('Good to see you '+name)
return ('Not today bro '+name)
//这里是新增的代码,主要在地址信息中添加了用‘,’分开的<>符号,这样能从地址栏get若干信息
//然后再调用下面的函数,从参数列表中依次传入
//(这些不是python的注释,只是为了看的清,如果复制请删除)
if __name__=='__main__':
app.run(port = 19997, debug = True)
这样就能从地址栏获取信息了:
跳转页面:
from flask import redirect
@app.route('/login')
def login():
return redirect('https://passport.bilibili.com/login')
//新增的代码,规则就是这样,套用就是了
将数据打包为html返回(重点):
展示一个已有的html文档:
暴力的方法如下,硬构造html的字符串,然后返回,构造起来非常麻烦,降低可读性
@app.route('/')
def returnHtml():
return 一个html格式的字符串
所以要学会用“模板”来打包数据。
首先看一个最简单的模板的使用
(这里修改了app.config[‘SEND_FILE_MAX_AGE_DEFAULT’]
是因为之后要用到css这样的静态文件,并且修改一下刚刚用过的端口
避免在频繁修改css时体现在html上的
更新不及时,默认居然是12小时,debug要死。一时间看不懂没关系,用就是)
from flask import Flask
from flask import render_template
app = Flask(__name__) #创建一个swgi应用
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=5)
@app.route('/')
def helloWorld():
return render_template('index.html')
if __name__=='__main__':
app.run(port = 19996, debug = True)
创建目录templates(默认在这个文件夹中寻找html)
创建、编写index.html
<!DOCTYPE html>
<html lang='zh'>
<head>
<meta charset='utf-8'/>
<title>HelloWorld</title>
</head>
<body>
MainBody
</body>
</html>
现在显示的就是一个html文档了!
在html文档中设置数据:
上例还没有真正为html传入数据
为了传入数据,首先在html中要为数据留下放置他们的空间
修改index.html如下:
<!DOCTYPE html>
<html lang='zh'>
<head>
<meta charset='utf-8'/>
<title>HelloWorld</title>
</head>
<body>
{{user.name}}<br/>
{{user.info}}
</body>
</html>
这里双花括号就是声明user变量
@app.route('/<name>,<age>')
def helloWorld(name,age):
if int(age)>=18:
user={'name':name,'info':'Good to see you'}
else :
user={'name':name,'info':'Not today bro'}
return render_template('index.html',user=user)
传入参数只需要修改render_template,要使用默认参数的设置方式
本来python就不太强调数据类型,在这里也是使用很宽泛的
访问则得不同的html文档
更多的使用参照:
https://blog.csdn.net/bestallen/article/details/52055061?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-5
其他内容:
链接到外部css表:
虽然这里不是flask的内容,但还是记录一下,毕竟是我第一次使用:
修改index.html 指定css的链接和为需要应用css的地方命名div.name和div.info
<!DOCTYPE html>
<html lang='zh'>
<head>
<meta charset='utf-8'/>
<title>HelloWorld</title>
<link rel='stylesheet' type='text/css' href = 'static/css/index.css'/>
</head>
<body>
<div class='name'>
{{user.name}}
</div>
<hr/>
<div class='info'>
{{user.info}}
</div>
</body>
</html>
在对应目录下新建并编辑index.css 确保static和templates同级!
div.name{
background-color:gray;
}
div.info{
background-color:black;
color:white;
font-style:italic;
}
运行就看到css样式成功应用了
moment组件显示时间:
from flask_moment import Moment
app = Flask(__name__) #创建一个swgi应用
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=5)
Moment(app)
@app.route('/time')
def time():
return render_template('time.html')
time.html内容:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>当前时间</title>
{{moment.include_jquery()}}
{{moment.include_moment()}}
{{moment.lang('zh-cn')}}
</head>
<body>
{{moment().format("YYYY-MM-DD h:mm:ss a" )}}
</body>
</html>
这里具体怎么实现的我也不很清楚,
关键是app.py中调用的Monent(app)
推测在这个方法里对moment进行全局的设定,才能显示当前时间的