技术学习报告(Flask、Echarts、js、html、css)

技术学习报告

Flask

1. 概述

Flask是一个用Python编写的Web应用程序框架。

2. 准备工作

为开发环境安装virtualenv,方便管理专属的包和python版本。

tips: pycharm本身自带有这个功能,创建的时候选择虚拟环境就好了。

要在 Windows 上激活相应的环境,可以使用以下命令:

venv\scripts\activate

3. 安装Flask

在开启虚拟环境的基础上,使用pip进行安装。

pip install Flask

4. Flask应用

demo
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World'

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

Flask类的**route()**函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数。

app.route(rule, options)
  • rule 参数表示与该函数的URL绑定。
  • options 是要转发给基础Rule对象的参数列表。

在上面的示例中,’/ ’ URL与**hello_world()**函数绑定。

因此,当在浏览器中打开web服务器的主页时,将呈现该函数的输出。

最后,Flask类的**run()**方法在本地开发服务器上运行应用程序。

app.run(host, port, debug, options)

所有参数都是可选的

序号参数与描述
1host 要监听的主机名。 默认为127.0.0.1(localhost)。设置为“0.0.0.0”以使服务器在外部可用
2port 默认值为5000
3debug 默认为false。 如果设置为true,则提供调试信息
4options 要转发到底层的Werkzeug服务器。
调试模式

在运行或将调试参数传递给run()方法之前,通过将application对象的debug属性设置为True来启用Debug模式

app.run(debug = True)

5. 路由

可以使用@app.route(rule, options)进行绑定

还可以传递变量参数,默认字符串,可更换类型

@app.route('/hello/<name>')
def hello_name(name):
   return 'Hello %s!' % name

@app.route('/blog/<int:postID>')
def show_blog(postID):
   return 'Blog Number %d' % postID

@app.route('/rev/<float:revNo>')
def revision(revNo):
   return 'Revision Number %f' % revNo
序号转换器描述
1int接受整数
2float对于浮点值
3**path **接受用作目录分隔符的斜杠

6. URL动态构建

Flask URL构建

**url_for()**函数对于动态构建特定函数的URL非常有用。

from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/admin')
def hello_admin():
   return 'Hello Admin'


@app.route('/guest/<guest>')

def hello_guest(guest):
   return 'Hello %s as Guest' % guest


@app.route('/user/<name>')
def hello_user(name):
   if name =='admin':
      return redirect(url_for('hello_admin'))
   else:
      return redirect(url_for('hello_guest', guest = name))


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

上述脚本有一个函数hello_user(name),它接受来自URL的参数的值。

**hello_user()函数检查接收的参数是否与’admin’**匹配。

如果匹配,则使用**url_for()将应用程序重定向到hello_admin()函数,否则重定向到将接收的参数作为guest参数传递给它的hello_guest()**函数。

7. Flask HTTP方法

默认情况下,Flask路由响应GET请求。

但可以自己更改

8. 模板

模板基本使用

在项目下创建 templates 文件夹,用于存放所有模板文件,并在目录下创建一个模板文件 html 文件 hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
我的模板html内容
</body>
</html>

创建视图函数,将该模板内容进行渲染返回

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('hello.html')
模板变量

代码中传入字符串,列表,字典到模板中

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    # 往模板中传入的数据
    my_str = 'Hello Word'
    my_int = 10
    my_array = [3, 4, 2, 1, 7, 9]
    my_dict = {
        'name': 'xiaoming',
        'age': 18
    }
    return render_template('hello.html',
                           my_str=my_str,
                           my_int=my_int,
                           my_array=my_array,
                           my_dict=my_dict
                           )

模板中代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  我的模板html内容
  <br />{{ my_str }}
  <br />{{ my_int }}
  <br />{{ my_array }}
  <br />{{ my_dict }}
</body>
</html>

Flask 模板_w3cschool

示例代码:
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    my_int = 18
    my_str = 'curry'
    my_list = [1, 5, 4, 3, 2]
    my_dict = {
        'name': 'durant',
        'age': 28
    }

    # render_template方法:渲染模板
    # 参数1: 模板名称  参数n: 传到模板里的数据
    return render_template('hello.html',
                           my_int=my_int,
                           my_str=my_str,
                           my_list=my_list,
                           my_dict=my_dict)


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

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>
  <h2>我是模板</h2>
  {{ my_int }}
  <br>
  {{ my_str }}
  <br>
  {{ my_list }}
  <br>
  {{ my_dict }}
  <hr>
  <h2>模板的list数据获取</h2>
  <hr>
  {{ my_list[0] }}
  <br>
  {{ my_list.1 }}
  <hr>
  <h2>字典数据获取</h2>
  <hr>
  {{ my_dict['name'] }}
  <br>
  {{ my_dict.age }}
  <hr>
  <h2>算术运算</h2>
  <br>
  {{ my_list.0 + 10 }}
  <br>
  {{ my_list[0] + my_list.1 }}
</body>

</html>

9. Flask 静态文件

Web应用程序通常需要静态文件,例如javascript文件或支持网页显示的CSS文件。

通常,配置Web服务器并为您提供这些服务,但在开发过程中,这些文件是从您的包或模块旁边的static文件夹中提供,它将在应用程序的**/static**中提供。

index.html的HTML脚本如下所示:

<html>

   <head>
      <script type = "text/javascript" 
         src = "{{ url_for('static', filename = 'hello.js') }}" ></script>
   </head>
   
   <body>
      <input type = "button" onclick = "sayHello()" value = "Say Hello" />
   </body>
   
</html>

10. 表单数据传模板

来自客户端网页的数据作为全局请求对象发送到服务器。为了处理请求数据,应该从Flask模块导入。

Request对象的重要属性如下所列:

  • Form - 它是一个字典对象,包含表单参数及其值的键和值对。
  • args - 解析查询字符串的内容,它是问号(?)之后的URL的一部分。
  • Cookies - 保存Cookie名称和值的字典对象。
  • files - 与上传文件有关的数据。
  • method - 当前请求方法。
<form action="http://localhost:5000/result" method="POST">
     <p>Name <input type = "text" name = "Name" /></p>
     <p>Physics <input type = "text" name = "Physics" /></p>
     <p>Chemistry <input type = "text" name = "chemistry" /></p>
     <p>Maths <input type ="text" name = "Mathematics" /></p>
     <p><input type = "submit" value = "submit" /></p>
</form>
@app.route('/result',methods = ['POST', 'GET'])
def result():
   if request.method == 'POST':
      result = request.form
      return render_template("result.html",result = result)

这个可以将获得的html表单传给result

重新使用他

<!doctype html>
  <table border = 1>
     {% for key, value in result.items() %}
    <tr>
       <th> {{ key }} </th>
       <td> {{ value }}</td>
    </tr>
 {% endfor %}
</table>

11.重定向和错误

Flask类有一个**redirect()**函数。调用时,它返回一个响应对象,并将用户重定向到具有指定状态代码的另一个目标位置。

**redirect()**函数的原型如下:

Flask.redirect(location, statuscode, response)

在上述函数中:

  • location参数是应该重定向响应的URL。
  • statuscode发送到浏览器标头,默认为302。
  • response参数用于实例化响应。

以下状态代码已标准化:

  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT

默认状态代码为302,表示**‘found’**。

12. 处理文件上传

在 Flask 中处理文件上传非常简单。它需要一个 HTML 表单,其 enctype 属性设置为“multipart/form-data”,将文件发布到 URL。

URL 处理程序从 request.files[] 对象中提取文件,并将其保存到所需的位置。

每个上传的文件首先会保存在服务器上的临时位置,然后将其实际保存到它的最终位置。

目标文件的名称可以是硬编码的,也可以从 request.files[file]对象的filename属性中获取。

但是,建议使用 secure_filename() 函数获取它的安全版本。

可以在 Flask 对象的配置设置中定义默认上传文件夹的路径和上传文件的最大大小。

app.config[‘UPLOAD_FOLDER’] 定义上传文件夹的路径

app.config[‘MAX_CONTENT_LENGTH’] 指定要上传的文件的最大大小(以字节为单位)

Echarts

如何开始

echarts使用非常简单,只需要你能够获取到一个div的dom元素,同时设置了高度和宽度,就能利用其进行漂亮的图表展示,同时还可以通过setoption方法进行调整图标的配置项。

正交投影地球

myChart.showLoading();
let projection;
$.when(
  $.get(ROOT_PATH + '/data/asset/geo/world.json'),
  $.getScript('https://cdn.jsdelivr.net/npm/d3-array'),
  $.getScript('https://cdn.jsdelivr.net/npm/d3-geo')
).done(function (res) {
  myChart.hideLoading();
  // Add graticule
  const graticuleLineStrings = [];
  for (let lat = -80; lat <= 80; lat += 10) {
    graticuleLineStrings.push(createLineString([-180, lat], [180, lat]));
  }
  for (let lng = -180; lng <= 180; lng += 10) {
    graticuleLineStrings.push(createLineString([lng, -80], [lng, 80]));
  }
  res[0].features.unshift({
    geometry: {
      type: 'MultiLineString',
      coordinates: graticuleLineStrings
    },
    properties: {
      name: 'graticule'
    }
  });
  echarts.registerMap('world', res[0]);
  projection = d3.geoOrthographic();
  option = {
    geo: {
      map: 'world',
      projection: {
        project: (pt) => projection(pt),
        unproject: (pt) => projection.invert(pt),
        stream: projection.stream
      },
      itemStyle: {
        borderColor: '#333',
        borderWidth: 1,
        borderJoin: 'round',
        color: '#000'
      },
      emphasis: {
        label: {
          show: false
        },
        itemStyle: {
          color: 'skyblue'
        }
      },
      regions: [
        {
          name: 'graticule',
          itemStyle: {
            borderColor: '#bbb'
          },
          emphasis: {
            disabled: true
          }
        }
      ]
    }
  };
  myChart.setOption(option);
});
app.config = {
  rotateX: 0,
  rotateY: 0,
  onChange() {
    projection && projection.rotate([app.config.rotateX, app.config.rotateY]);
    myChart.setOption({
      geo: {}
    });
  }
};
app.configParameters = {
  rotateX: {
    min: -180,
    max: 180
  },
  rotateY: {
    min: -80,
    max: 80
  }
};
function createLineString(start, end) {
  const dx = end[0] - start[0];
  const dy = end[1] - start[1];
  const segs = 50;
  const stepX = dx / segs;
  const stepY = dy / segs;
  const points = [];
  // TODO needs adaptive sampling on the -180 / 180 of azimuthal projections.
  for (let i = 0; i <= segs; i++) {
    points.push([start[0] + i * stepX, start[1] + i * stepY]);
  }
  return points;
}

javascript

JavaScript 是 Web 的编程语言。

所有现代的 HTML 页面都使用 JavaScript。

常见的HTML事件

下面是一些常见的HTML事件的列表:

事件描述
onchangeHTML 元素改变
onclick用户点击 HTML 元素
onmouseover鼠标指针移动到指定的元素上时发生
onmouseout用户从一个 HTML 元素上移开鼠标时发生
onkeydown用户按下键盘按键
onload浏览器已完成页面的加载

For/In 循环

JavaScript for/in 语句循环遍历对象的属性:

实例

var person={fname:“Bill”,lname:“Gates”,age:56}; for (x in person) // x 为属性名 { txt=txt + person[x]; }

改变 HTML 样式

如需改变 HTML 元素的样式,请使用这个语法:

document.getElementById(id).style.property=新样式

详细记录

emmm,基本跟C++和java语法类似,可以看看菜鸟教程的[JavaScript教程](JavaScript 教程 | 菜鸟教程 (runoob.com))

HTML

超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。

您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。

基本架构

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
</body>
</html>

详细总结

本技术此前有过研究与总结,直接可以跳转HTML总结

CSS

通过使用 CSS 我们可以大大提升网页开发的工作效率!

在我们的 CSS 教程中,您会学到如何使用 CSS 同时控制多重网页的样式和布局。

基本样式

body {
    background-color:#d0e4fe;
}
h1 {
    color:orange;
    text-align:center;
}
p {
    font-family:"Times New Roman";
    font-size:20px;
}

详细总结

本技术此前有过研究与总结,直接可以跳转CSS总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!如果您想使用Python Flask框架与ECharts图表库一起创建数据可视化应用程序,可以按照以下步骤操作: 1. 安装Python FlaskECharts 您可以使用pip命令安装Python FlaskECharts: ``` pip install flask pip install pyecharts ``` 2. 创建Flask应用程序 在您的Python项目中,创建一个名为`app.py`的文件,然后将以下代码复制到文件中: ``` from flask import Flask, render_template from pyecharts import options as opts from pyecharts.charts import Bar app = Flask(__name__) @app.route("/") def index(): # 创建一个简单的ECharts柱状图 bar_chart = Bar() bar_chart.add_xaxis(["A", "B", "C", "D", "E"]) bar_chart.add_yaxis("数据", [5, 20, 36, 10, 75]) bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="数据可视化")) # 渲染HTML模板并将图表嵌入其中 return render_template("index.html", chart=bar_chart.render_embed()) if __name__ == "__main__": app.run(debug=True) ``` 在上面的代码中,我们使用Flask和pyecharts库创建了一个简单的柱状图,并将其嵌入HTML模板中。在这个应用程序中,当用户访问网站的根目录时,它将渲染名为`index.html`的模板,并将图表嵌入其中。 3. 创建HTML模板 在项目的根目录下创建一个名为`templates`的文件夹,并在其中创建一个名为`index.html`的文件。将以下代码复制到`index.html`文件中: ``` <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>数据可视化</title> <!-- 引入ECharts库 --> <script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script> </head> <body> <!-- 在这里嵌入图表 --> {{ chart | safe }} </body> </html> ``` 在上面的代码中,我们引入了ECharts库,并使用`{{ chart | safe }}`语法将图表嵌入到HTML模板中。这里的`safe`过滤器可以确保图表代码被正确地呈现在网页上。 4. 运行Flask应用程序 在命令行中进入您的项目目录,并运行以下命令启动Flask应用程序: ``` python app.py ``` 现在,您可以在浏览器中访问`http://localhost:5000`,看到一个简单的柱状图。如果您想在图表中使用其他ECharts图表类型,可以在Flask应用程序中使用相应的pyecharts库函数来创建它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值