python之flask框架:


flask图标

简介

Flask是一个轻量级的基于Python的web框架。
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

优势

一、后续的基于机器学习的车辆检测与属性识别算法研究,主要开发语言也是应用Python,整个系统统一开发语言,便于开发和后期维护。
二、Flask因为灵活、轻便且高效的特点被业界认可,同时拥有基于Werkzeug、Jinja2等一些开源库,拥有内置服务器和单元测试,适配RESTful,支持安全的cookies,而且官方文档完整,便于学习掌握。
三、Flask中拥有灵活的Jinja2模板引擎,提高了前端代码的复用率。这样可以提高开发效率和有利于后期开发与维护。在现有标准中,Flask算是微小型框架。Flask有两个主要依赖:路由、调试和Web服务器网关接口(WebServerGatewayInterface,WSGI)子系统由Werkzeug提供;模板系统由Jinja2提供。Werkzeug和Jinja2都是由Flask的核心开发者开发而成。对于数据库访问、验证Web表单和用户身份认证等一系列功能,Flask框架是不支持的。这些功能都是以扩展组件的方式进行实现,然后再与Flask框架集成。开发者可以根据项目的需求进行相应的扩展,或者自行开发。这与大型框架恰恰相反,大型框架本身做出了大部分决定,难以灵活改变方案。

其他框架

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

框架目录结构
默认配置

static和templates目录是默认配置,其中static用来存放静态资源,例如图片、js、css文件等。templates存放模板文件。
我们的网站逻辑基本在server.py文件中,当然,也可以给这个文件起其他的名字。

flask的目录包括以上这种框架,所谓static里就是放数据和渲染的文件,比如.csv,.txt,.css,.js,数据以及图片和视频。

templates,模板,就是HTML模板,放置HTML的地方。

app.py:flask运行的主程序

其他.py 蓝图,就是具备app.py的后端程序功能,但不是主程序,叫做蓝图

----app.py----


from flask import Flask, render_template
import news as news, products as products # 导入相应模块app = Flask(__name__)  # 创建 Flask()对象: app@app.route('/')  # 使用了蓝图,app.route() 这种模式就仍可以使用,注意路由重复的问题def hello_world():  # 定义函数return render_template('index.html')app.register_blueprint(news.new_list)  # 将news模块里的蓝图对象new_list注册到appapp.register_blueprint(products.product_list)  # 将products模块里的蓝图对象product_list注册到appif __name__ == '__main__':app.run(host='127.0.0.1',port=8082, debug=True)  # 调试模式开 启动服务器 运行在默认的5000端口

-----蓝图------

  1. news(新闻界面蓝图)
from flask import Blueprint  # 导入Blueprint模块
from flask import Flask, render_template, request  # 导入相应模块
new_list = Blueprint('news', __name__)  # 创建一个blueprint对象。第一个参数可看做该blueprint对象的姓名# 在一个app里,姓名不能与其余的Blueprint对象姓名重复# 第二个参数__name__用作初始化@new_list.route("/login", methods=['GET', 'POST'])  # 将蓝图对象当做‘app’那样使用# def new():  # 定义函数news()
#def login():  # 定义视图函数k = int(request.form.get('name'))b = int(request.form.get('password'))from pyecharts.charts import Lineimport pyecharts.options as optsimport numpy as npx = np.linspace(0, 2 * np.pi, 100)y = k*x + b(Line(init_opts=opts.InitOpts(width="700px", height="300px")).add_xaxis(xaxis_data=x).add_yaxis(series_name="绘制线图", y_axis=y, label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="我是标题", subtitle="我是副标题", title_link="https://www.baidu.com/"),tooltip_opts=opts.TooltipOpts(axis_pointer_type="cross"))).render('templates/news.html')return render_template('news.html',**locals())

-----蓝图------
2. products(产品蓝图)

from flask import Blueprint  # 导入Blueprint模块
from flask import Flask,render_template,request,redirect,url_for
from werkzeug.utils import secure_filename
import os
product_list = Blueprint('products', __name__)  # 创建一个blueprint对象。第一个参数可看做该blueprint对象的名字# 在一个app里,对象名不能与其余的Blueprint对象名重复# 第二个参数__name__用作初始化@product_list.route("/products", methods=['POST', 'GET'])  # 将蓝图对象当做‘app’那样使用def product():if request.method == 'POST':f = request.files['file']basepath = os.path.dirname(__file__)  # 当前文件所在路径upload_path = os.path.join(basepath, 'static/dataes',secure_filename(f.filename))  #注意:没有的文件夹一定要先创建,不然会提示没有该路径f.save(upload_path)import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsplt.switch_backend('agg')sns.set(style='whitegrid', context='notebook')  # style控制默认样式,context控制着默认的画幅大小plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']df = pd.read_csv('static/dataes/kaggle.csv')  # 指你要用哪些列的数据df_corr=df.corr()sns.heatmap(df.corr(), annot=True, vmax=1, square=True, cmap="Blues")plt.savefig('static/images/heatmap.png')return render_template('products.html',**locals())

—templates(模板)—

index.html

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--指定网页编码--><title>Title</title><!--指定网页标题--><style type="text/css">.div1 {height:180px;width:380px;border:1px solid #8A8989;margin:0 auto;}.input{display: block;width: 350px;height: 40px;margin: 10px auto;}.button{background: #2066C5;color: white;font-size: 18px;font-weight: bold;height: 50px;border-radius: 4px;}</style></head><!--head区域完毕--><body><!--body区域开始--><h3 style="text-align:center">输入y=kx+b形式函数</h3><div class="div1"><form action="login" method = "post"><!--定义表单开始--><input type="number" class="input" name="name" placeholder="请输入回归系数"><!--输入文本框--><input type="number" class="input" name="password" placeholder="请输入回归截距"><!--输入文本框--><input type="submit" value="输出"  class="input button" ><!--定义登陆用button--></form></div> <!--form表单结束--></body><!--body区域完毕--></html>

news.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Awesome-pyecharts</title><script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script></head>
<body><div id="843fff3599974719a844a2289e4b73ff" class="chart-container" style="width:700px; height:300px;"></div><script>var chart_843fff3599974719a844a2289e4b73ff = echarts.init(document.getElementById('843fff3599974719a844a2289e4b73ff'), 'white', {renderer: 'canvas'});var option_843fff3599974719a844a2289e4b73ff = {"animation": true,"animationThreshold": 2000,"animationDuration": 1000,"animationEasing": "cubicOut","animationDelay": 0,"animationDurationUpdate": 300,"animationEasingUpdate": "cubicOut","animationDelayUpdate": 0,"color": ["#c23531","#2f4554","#61a0a8","#d48265","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3","#f05b72","#ef5b9c","#f47920","#905a3d","#fab27b","#2a5caa","#444693","#726930","#b2d235","#6d8346","#ac6767","#1d953f","#6950a1","#918597"],"series": [{"type": "line","name": "\u7ed8\u5236\u7ebf\u56fe","connectNulls": false,"symbolSize": 4,"showSymbol": true,"smooth": false,"clip": true,"step": false,"data": [[0.0,65.0],[0.06346651825433926,65.3173325912717],[0.12693303650867852,65.63466518254339],[0.1903995547630178,65.9519977738151],[0.25386607301735703,66.26933036508679],[0.3173325912716963,66.58666295635848],[0.3807991095260356,66.90399554763017],[0.4442656277803748,67.22132813890187],[0.5077321460347141,67.53866073017358],[0.5711986642890533,67.85599332144527],[0.6346651825433925,68.17332591271696],[0.6981317007977318,68.49065850398866],[0.7615982190520711,68.80799109526035],[0.8250647373064104,69.12532368653206],[0.8885312555607496,69.44265627780375],[0.9519977738150889,69.75998886907544],[1.0154642920694281,70.07732146034714],[1.0789308103237674,70.39465405161883],[1.1423973285781066,70.71198664289054],[1.2058638468324459,71.02931923416223],[1.269330365086785,71.34665182543392],[1.3327968833411243,71.66398441670562],[1.3962634015954636,71.98131700797732],[1.4597299198498028,72.29864959924902],[1.5231964381041423,72.61598219052071],[1.5866629563584815,72.9333147817924],[1.6501294746128208,73.25064737306411],[1.71359599286716,73.5679799643358],[1.7770625111214993,73.8853125556075],[1.8405290293758385,74.20264514687919],[1.9039955476301778,74.51997773815089],[1.967462065884517,74.83731032942259],[2.0309285841388562,75.15464292069429],[2.0943951023931957,75.47197551196598],[2.1578616206475347,75.78930810323767],[2.221328138901874,76.10664069450937],[2.284794657156213,76.42397328578107],[2.3482611754105527,76.74130587705277],[2.4117276936648917,77.05863846832446],[2.475194211919231,77.37597105959615],[2.53866073017357,77.69330365086785],[2.6021272484279097,78.01063624213955],[2.6655937666822487,78.32796883341125],[2.729060284936588,78.64530142468294],[2.792526803190927,78.96263401595463],[2.8559933214452666,79.27996660722633],[2.9194598396996057,79.59729919849804],[2.982926357953945,79.91463178976973],[3.0463928762082846,80.23196438104142],[3.1098593944626236,80.54929697231312],[3.173325912716963,80.86662956358481],[3.236792430971302,81.18396215485652],[3.3002589492256416,81.50129474612821],[3.3637254674799806,81.8186273373999],[3.42719198573432,82.1359599286716],[3.490658503988659,82.45329251994329],[3.5541250222429985,82.770625111215],[3.6175915404973376,83.08795770248669],[3.681058058751677,83.40529029375838],[3.744524577006016,83.72262288503008],[3.8079910952603555,84.03995547630177],[3.8714576135146945,84.35728806757348],[3.934924131769034,84.67462065884517],[3.998390650023373,84.99195325011686],[4.0618571682777125,85.30928584138856],[4.1253236865320515,85.62661843266025],[4.188790204786391,85.94395102393196],[4.25225672304073,86.26128361520365],[4.3157232412950695,86.57861620647535],[4.3791897595494085,86.89594879774704],[4.442656277803748,87.21328138901875],[4.506122796058087,87.53061398029044],[4.569589314312426,87.84794657156213],[4.6330558325667655,88.16527916283383],[4.696522350821105,88.48261175410553],[4.759988869075444,88.79994434537721],[4.823455387329783,89.11727693664892],[4.886921905584122,89.43460952792061],[4.950388423838462,89.75194211919231],[5.013854942092801,90.06927471046401],[5.07732146034714,90.3866073017357],[5.14078797860148,90.7039398930074],[5.204254496855819,91.0212724842791],[5.267721015110158,91.33860507555079],[5.331187533364497,91.6559376668225],[5.394654051618837,91.97327025809419],[5.458120569873176,92.29060284936588],[5.521587088127515,92.60793544063758],[5.585053606381854,92.92526803190927],[5.648520124636194,93.24260062318098],[5.711986642890533,93.55993321445267],[5.775453161144872,93.87726580572436],[5.838919679399211,94.19459839699606],[5.902386197653551,94.51193098826775],[5.96585271590789,94.82926357953946],[6.029319234162229,95.14659617081115],[6.092785752416569,95.46392876208284],[6.156252270670908,95.78126135335454],[6.219718788925247,96.09859394462623],[6.283185307179586,96.41592653589794]],"hoverAnimation": true,"label": {"show": false,"position": "top","margin": 8},"lineStyle": {"show": true,"width": 1,"opacity": 1,"curveness": 0,"type": "solid"},"areaStyle": {"opacity": 0},"zlevel": 0,"z": 0}],"legend": [{"data": ["\u7ed8\u5236\u7ebf\u56fe"],"selected": {"\u7ed8\u5236\u7ebf\u56fe": true},"show": true,"padding": 5,"itemGap": 10,"itemWidth": 25,"itemHeight": 14}],"tooltip": {"show": true,"trigger": "item","triggerOn": "mousemove|click","axisPointer": {"type": "cross"},"showContent": true,"alwaysShowContent": false,"showDelay": 0,"hideDelay": 100,"textStyle": {"fontSize": 14},"borderWidth": 0,"padding": 5},"xAxis": [{"show": true,"scale": false,"nameLocation": "end","nameGap": 15,"gridIndex": 0,"inverse": false,"offset": 0,"splitNumber": 5,"minInterval": 0,"splitLine": {"show": false,"lineStyle": {"show": true,"width": 1,"opacity": 1,"curveness": 0,"type": "solid"}},"data": null}],"yAxis": [{"show": true,"scale": false,"nameLocation": "end","nameGap": 15,"gridIndex": 0,"inverse": false,"offset": 0,"splitNumber": 5,"minInterval": 0,"splitLine": {"show": false,"lineStyle": {"show": true,"width": 1,"opacity": 1,"curveness": 0,"type": "solid"}}}],"title": [{"text": "\u6211\u662f\u6807\u9898","link": "https://www.baidu.com/","subtext": "\u6211\u662f\u526f\u6807\u9898","padding": 5,"itemGap": 10}]
};chart_843fff3599974719a844a2289e4b73ff.setOption(option_843fff3599974719a844a2289e4b73ff);</script>
</body>
</html>

products.html

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><h1>heatmap热力图显示以及计算</h1><form action="" enctype='multipart/form-data' method='POST'><input type="file" name="file"><input type="submit" value="上传"></form><img src="static/images/heatmap.png"><br>{% for k,v in df_corr.items() %}
{{ v}}<br>
{% endfor %}
</body></html>

效果展示


第七讲:flask框架相关推荐

  1. 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2

    <ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 摘要:在第 ...

  2. flask框架视图和路由_角度视图,路由和NgModule的解释

    flask框架视图和路由 Angular vs AngularJS (Angular vs AngularJS) AngularJS (versions 1.x) is a JavaScript-ba ...

  3. Flask框架项目实例:**租房网站(二)

    Flask是一款MVC框架,主要是从模型.视图.模板三个方面对Flask框架有一个全面的认识, 通过完成作者-读书功能,先来熟悉Flask框架的完整使用步骤. 操作步骤为: 1.创建项目 2.配置数据 ...

  4. Flask框架项目实例:**租房网站(一)

    Flask是一款MVC框架,主要是从模型.视图.模板三个方面对Flask框架有一个全面的认识, 通过完成作者-读书功能,先来熟悉Flask框架的完整使用步骤. 操作步骤为: 1.创建项目 2.配置数据 ...

  5. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵

    专栏系列文章如下:  专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...

  6. python flask框架优点_python之全栈(Flask框架)

    虚拟环境 虚拟环境顾名思义就是虚拟的,在这里面装任何软件都不会影响到其他的程序,类似与一个抽屉. 使用虚拟环境的好处是:让电脑中安装很多种解释器,并且互不影响 virtualenv的使用 安装virt ...

  7. 谈谈Python的Flask框架学习与福利分享

    在秋天中暑 熬过了炎炎夏日,却在这个初秋的日子中暑了.本来休息不好,今天又跑了一天,结果回来坐车吹空调冷热交替的崩溃了... 脑壳疼 回家就躺倒睡了一觉,感觉舒服点了,起床开电脑却又不知道学点什么,想 ...

  8. 【实训总结】Python从入门到前端知识小结,再到Flask框架搭建在线书城~

    实训小结:Python入门到爬虫 Python实训 一.基础入门 1. 行业 2. 搭建开发环境 3.如何使用PyCharm创建一个Python项目 4. 如何在Pycharm创建的Python项目中 ...

  9. Python 什么是flask框架?快速入门

    一.Python flask框架 前言 1.Python 面向对象的高级编程语言,以其语法简单.免费开源.免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析. ...

最新文章

  1. python三层装饰器-python三大神器===》装饰器
  2. python教程:深拷贝与浅拷贝的具体区别在哪里
  3. hdu 5501(贪心+01背包)
  4. 深入理解Linux守护进程
  5. pytorch默认初始化_PyTorch的初始化
  6. c mysql dll_C:\Windows\libmysql_e.dll
  7. 用CNN做NLP文本分类竞赛
  8. Wireshark 过滤器
  9. Python Numpy模块函数np.c_和np.r_学习使用
  10. linux系统下安装GCC编译器
  11. linux打包压缩命令
  12. 八类网线和七类网线的区别_7类网线和8类网线到底有何不同?
  13. PHP中根据汉字返回拼音
  14. Win10如何关闭win11自动更新?
  15. 将sublime右下角永远改为HTML格式
  16. 用python的turtle画等边三角形讲解_通过Python turtle绘制等边三角形谈编程思维和逻辑...
  17. 字节跳动40W大数据开发岗,面试也不过如此
  18. mysql群发消息_百万级用户量的站内信群发数据库设计
  19. 一种基于傅里叶变换的相位配准算法phase correlation approach,利用互功率谱得到时空的平移。
  20. 「ASO优化服务」APP如何做数据分析

热门文章

  1. Cobalt Strike|Beacon原理浅析
  2. ALSA子系统(一)------Frames Periods
  3. 拆解诺基亚E71,解决莫名其妙重启的问题,以及GPS无法搜星的问题
  4. 这是我的第一个博客有关javascrit的
  5. phantompdf 下载_英雄联盟手游详细下载方法,附中文翻译!
  6. vue中实现生成海报图片html2canvas详细教程
  7. 多元函数的极限,连续,偏导数,全微分之间的关系(学习笔记)
  8. 嵌入式主板在数控机床领域的应用
  9. 阿里起诉淘宝假货店主,携手数家公司利用大数据打假
  10. VoIP全球发展现状