数据可视化
收集到的数据可以在不同平台展示,也可以展示不同的数据效果。
一、flask框架
web框架。核心为Werkzeng(路由分发)和jinja2(页面渲染)。
创建一个flask的框架的java项目,目录中
static | 用来存放css,js等 |
---|---|
templates | 用来存放网页 |
1、开启debug模式
优点:
- 可以只刷新页面就看到修改的页面(无需重启项目)
- 报错会有错误提示
方法:
2、路由设置
创建flask项目
案例一:普通访问
from flask import Flask
app = Flask(__name__)
#路由解析,通过用户访问的路径,匹配相应的函数
@app.route('/a')
def hello_world(): # put application's code here
return 'Hello aaa!'
if __name__ == '__main__':
app.run()
访问网址:http://127.0.0.1:5000/a
结果:Hello aaa!
案例二:字符串变量访问
#通过访问路径,获取用户的字符串参数
@app.route('/user/<name>')
def welcome(name):
return "你好,%s"%name
结果如下:
案例三:整型变量访问
#通过访问路径,获取用户的整型参数 此外还有float参数
@app.route('/user/<int:id>')
def welcome2(id):
return "你好,%d号的会员"%id
#路由路径不能重复,用户通过唯一路径访问特定的函数
结果如下:
3、页面渲染
显然。我们想要的不仅仅是文字内容,我们想要的是一个页面。
我们就需要用到jinja2.
案例一:普通访问
首先,我们要在templates下创建一个index.html文件,写欢迎光临
#返回用户渲染后的网页文件
@app.route("/")
def index2():
return render_template("index.html")
案例二:访问变量
#引用定义变量
from flask import Flask,render_template
import datetime
app = Flask(__name__)
#向页面传递一个变量
@app.route("/")
def index2():
time = datetime.date.today() #普通变量
name = ["zhang","wang","li"] #列表类型
task = {"任务":"到扫卫生","时间":"3h"} #字典类型
return render_template("index.html",var = time,list = name,task = task)
#启动
if __name__ == '__main__':
app.run()
index.html如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>欢迎你</title>
</head>
<br>
欢迎光临,今天是{{ var }}。<br/>
今天值班的有:</br>
{% for data in list %} <!--用大括号和百分号括起来的是控制结构,还有If -->
{{ data }}
{% endfor %}<br/><br/>
任务:<br/> <!-- 了解一下如何在页面打印表格,以及如何选择迭代-->
<table border="1">
{% for key,value in task.items() %} <!--[(key,value),(),()]-->
<tr>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
</body>
结果如下:
案例三:表单提交
register.html页面表单填写,跳转result.html页面显示填写内容
在templates下创建文件夹test,创建两个html文件,register.html,result.html
#引用定义变量
from flask import Flask,render_template,request
import datetime
app = Flask(__name__)
#表单提交
@app.route('/test/register')
def register():
return render_template("test/register.html")
#接受表单提交的路由,需要值得method为post
@app.route('/result',methods = ['POST','GET'])
def result():
if request.method == 'POST' :
#post方法,想要拿到页面内容(表单)用request.form
result = request.form
return render_template("test/result.html",result = result)
#启动
if __name__ == '__main__':
app.run()
register.html
<body>
# <form action="http://localhost:5000/result" method="post">
<form action="{{ url_for('result') }}" method="post"> #{{ url_for('result') }}动态生成路由位置
<p>姓名:<input type="text" name="姓名"></p>
<p>年龄:<input type="text" name="年龄"></p>
<p>性别:<input type="text" name="性别"></p>
<p>地址:<input type="text" name="地址"></p>
<p><input type="submit" value="提交"></p>
</form>
</body>
result.html
<body>
<table border="1">
{% for key,value in result.items() %} <!--[(key,value),(),()]-->
<tr>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
</body>