数据可视化Flask框架

232 阅读2分钟

一、Flask框架

            如果是copy别人的网页,则将js/css等文件放入static文件夹,静态网页放入templates文件夹。然后在网页中,选中css/ 或者要改的路径的前缀(这里多一个/是因为避免修改了后缀),然后CTRL+R,就会在上方出现两个文本框,第一个显示 css/  ,第二个就开始修改为static/css/,然后选择Replace all。全部修改。

    1.1 首先启动Debug模式。

             这样就不用每一次修改就重启服务器(每一次修改记得保存再去网页刷新)。

**            而且可以在浏览器就能帮助你快速锁定错误的位置**。

      1.2  app.py

from flask import Flask,render_template,request

import datetime

app = Flask(__name__)

# 记得先将Debug模式开启,就不用每次重启服务器,而且有错误的话,会在浏览器直接显示错误的位置;

# **************************************************
# 路由解析:通过用户访问的路径,匹配相应的函数(路由路径一定不能重复,
#用户通过特定的路径访问不同的函数)

# 1.通过访问路径,自动识别获取用户的字符串参数
# @app.route('/user/<name>')
# def welcom1(name):
#     return '你好,%s'%name
#
# # 2.通过访问路径,自动识别获取用户的整形参数(或者float参数)
# @app.route('/user/<int:id>')
# def welcom2(id):
#     return '欢迎,%d号会员'%id

# **************************************************

# 进行html操作(from flask import Flask,render_template)
# 在templates中创建index.html

# 返回给用户渲染过的文件。
# @app.route("/")
# def index():
#     return  render_template("index.html")

# 实现动态:向页面传递一些变量。
@app.route("/")
def index():
    now_time = datetime.date.today()        # 普通变量
    list = ["小张","小李","小王"]           # 列表
    task = {"任务":"打扫卫生","时间":"3小时"}    # 字典类型
    return  render_template("index.html",time = now_time,list = list,task = task)

# 实现表单提交  在templates下,创建test文件夹,创建register.html
@app.route('/test/register')
def register():
    return render_template("test/register.html")

# 如果接收端要接收表单提交的路由,需要指定methods,否则出现(The method is not allowed )
@app.route('/result',methods=['POST','GET'])
def result():
    # 导入包(request)
    if request.method == 'POST':
        result = request.form
        return render_template("test/result.html",result = result)
    # else:
    #     print("do  else things")

if __name__ == '__main__':
    app.run()

      1.3  index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body>
    <a href="test/register">进入注册</a>
   <h1>欢迎光临,今天是{{ time}}</h1>
   今天值班的有:</br>
    <!--用大括号和百分号括起来的是控制结构,还有if也可以。-->
     {% for data in list %}
        <li>{{ data }}</li>
   {% endfor %}

   任务:</br>     <!--如何在页面打印表格,以及如何迭代-->
   <table border="1">
         <!--使用task.items()后 就变成了列表 :[(key,value),(key,value),(key,value)....]  -->
       {% for key,value in task.items() %}
       <tr>
           <td>{{ key }}</td>
           <td>{{ value }}</td>
       </tr>
       {% endfor %}
   </table>

</body>
</html>

     1.4   register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
   <!--使用url_for直接指定要处理的路由-->
   <form action="{{ url_for('result') }}" method="post">
       <p>姓名:<input type="text" name="name"></p>
       <p>年龄:<input type="text" name="age"></p>
       <p>性别:<input type="text" name="sex"></p>
       <p>地址:<input type="text" name="address"></p>
       <p><input type="submit" value="提交"></p>

   </form>
</body>
</html>

        1.5   result.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1">
         <!--使用task.items()后 就变成了列表 :[(key,value),(key,value),(key,value)....]  -->
      <th>姓名</th> <th>年龄</th> <th>性别</th> <th>地址</th>
    <tr>
       {% for key,value in result.items() %}
               <td>{{ value }}</td>
       {% endfor %}
    </tr>
   </table>
</body>
</html>