精华内容
下载资源
问答
  • Flask框架

    万次阅读 2020-05-03 17:33:24
    Flask框架 一、初识Flask 二、Flask路由注册 三、Flask的HTTP请求 四、Flask视图函数 五、Flask模板 六、Flask应用数据库 七、Flask脚本 八、Flask cookie、session、闪现 九、Flask请求扩展、中间件、蓝图 十、...
    展开全文
  • flask框架

    2021-02-03 13:19:17
    它被称为微框架,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。 一般情况下...

    Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。

    一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。

    这里我将数据都存储在MySQL中,所以使用flask框架时需要对MySQL数据库进行连接,读取数据后,将数据传入echarts中,进行web页面的展示。前提是在虚拟机中部署好python3的环境以及flask框架,添加好各种包以及可视化需要的js文件等。

     

    Windows下安装flask

    升级pip

    flask框架的文件分布如下,web_see为整体框架目录,其下有static、templates两个包,分别存储不同类型的文件,static、templates的同级存放py文件为导入数据的代码。

     

    static文件夹

    echarts.min.js文件可以在echarts官网进行下载

    templates文件夹

    这里绘制的是折线图

    引用MySQL的数据需要使用{{  }}引起来

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>电商服装类数据市场分析——折线图</title>
        <script src="/static/echarts.min.js"></script>  //必须引用,或者不下载到本地,直接使用链接
        <style>
            #main{
                width: 600px;
                height: 400px;
            }
        </style>
    </head>
    <body>
    <div id="main"></div>
        <script type="text/javascript">
                // 基于准备好的dom,初始化 echarts 实例并绘制图表。
                var myChart=echarts.init(document.getElementById('main'));
                // 指定图表的配置项和数据
                var option = {
                    title: {
                        text: '时间-交易价格'
                    },
                    dataZoom: [{
                              type: 'slider',
                              show: true, //flase直接隐藏图形
                              xAxisIndex: [0],
                              left: '9%', //滚动条靠左侧的百分比
                              bottom: -5,
                              start: 10,//滚动条的起始位置
                              end: 20 //滚动条的截止位置(按比例分割你的柱状图x轴长度)
                          }],
                    xAxis: {
                        name:"时间",
                        type: 'category',
                        data:[
                        		{% for i in femaletime %}
                                	"{{ i[0] }}",
                            	{% endfor %}
                           ]},
                    yAxis: {
                        name:"售价",
                        type: 'value',
                        axisLabel : {
                        formatter: '{value} 元'}
                    },
                    series: [
                            {
                                type: 'line',	//line折线图。bar柱形图
                                data:[{% for j in female_num %}
                                		"{{ j }}",
                            			{% endfor %}],
                                itemStyle:{normal: {color:"#FF6A6A"}}
                            },
                            {
                                type: 'line',	//line折线图。bar柱形图
                                data:[{% for k in male_num %}
                                		"{{ k }}",
                            			{% endfor %}],
                                itemStyle:{normal: {color:"#31b0d5"}}
                            },
                        ]
                    };
                myChart.setOption(option);// 基于准备好的dom,初始化 echarts 实例并绘制图表。
         </script>
    </body>
    </html>

    line.py

    这里绘制的是折线图

    from flask import Flask, render_template, url_for
    import pymysql
    import re
    
    # 生成Flask实例
    app = Flask(__name__)
    
    @app.route("/")
    def my_echart():
        # 连接数据库,***的位置需要根据自己的数据库信息进行填写
        conn = pymysql.connect('192.168.159.135', user='root', password='Root123!', db='clothing')
        cur = conn.cursor()
    
        sqlfemale = ' SELECT * FROM  clothes'  # 女
        sqlmale = ' SELECT * FROM  clothes2 '  # 男
    
        cur.execute(sqlfemale)
        femaleresult = cur.fetchall()
        cur.execute(sqlmale)
        maleresult = cur.fetchall()
    
        pattern = re.compile(r'\d+:\d+', re.S)
    
        femaletime = []
        female_num = []
        for m in range(len(femaleresult)):
            female_num.append(femaleresult[m][3])
    
            a = re.findall(pattern, femaleresult[m][2])
            femaletime.append(a)
            femaletime.sort() # 对时间进行排序
    
        # maletime = []
        male_num = []
        for n in range(len(maleresult)):
            male_num.append(maleresult[n][3])
            # a = re.findall(pattern, maleresult[n][2])
            # maletime.append(a)
    
        cur.close()
        conn.close()
        # 在浏览器上渲染people_flow.html(为了查看输出的数据)
        return render_template('linepic.html',femaletime=femaletime,female_num=female_num,male_num=male_num)
    
    if __name__ == '__main__':
        app.run(debug=True)

    展开全文
  • Flask 框架

    2019-04-02 09:43:27
    flask框架的诞生及特点 1,flask 简介 诞生于2010年,用python语言实现 轻量的web框架,简洁、扩展性强 核心:werkzeug(工具箱)和Jinja2(模板引擎) 2.flask的使用 建议使用虚拟环境 创建创建虚拟环境:...

                                  flask框架的诞生及特点

    1,flask 简介

    诞生于2010年,用python语言实现
    轻量的web框架,简洁、扩展性强
    核心:werkzeug(工具箱)和Jinja2(模板引擎)

    2.flask的使用

    建议使用虚拟环境
    创建创建虚拟环境:mkvirtualenv 虚拟环境名称
    删除虚拟环境:rmvirtualenv 虚拟环境名称
    进入虚拟环境:source     虚拟环境名称/bin/activate
    安装依赖文件:pip install -r requirements.txt
    生成依赖文件:pip freeze > requirements.txt
    项目开发过程中,依赖文件发生改变,应及时更新依赖文件

    3. 视图
        基本程序的实现:Flaks版本的hello world
    1、app = Flask(__name__)参数的主要作用,确定程序所在的目录,默认创建静态路由static,访问模板文件;
    2、装饰器路由的实现:通过werkzeug的routing模块的装换器实现
    Rule类构造具体的(url和视图函数的映射)
    Map类存储了多条Rule类(url和视图函数的映射)
    MapAdapter类实现把具体的url和视图函数的绑定在一起
        动态路由参数:<>里面可以定义动态的参数,默认情况下是字符串类型,可以接收除斜线外的字符串;
    1、int和float互不兼容,字符串可以兼容数值;<int:house_id>
    2、path接收的参数可以有斜线
        正则URL:需要继承自BaseConverter转换器
    1、需要自定义正则类
    2、把自定义的正则类添加到当前应用程序中,app.url_map.converters['regex'] = 自定义的正则类
    3、在装饰器中使用转换器
    作用:优化访问路径,限制访问
    示例:
    http://127.0.0.1:5000/static/html/index.html
    http://127.0.0.1:5000/index.html
        返回状态码:
    1、return可以实现自定义的状态码,一般用来实现前后端数据交互
    2、abort函数只能抛出符合http协议的状态码,本质类似raise语句,一般用来配合@app.errorhandler()实现自定义错误页面,errorhandler会接收abort函数抛出的状态码
        状态保持:http协议的无状态,cookie本质是字典,由于cookie的不安全,出现了session,在客户端写入session_id;
    1、设置cookie信息:使用make_response()对象,实现状态保持,response.set_cookie('itcast','python')
    2、获取cookie信息:request.cookies.get('itcast')
        重定向:redirect,一般在项目文件或目录改变的情况下使用重定向
    a = 'http://www.ticas.cn' 
    return redirect(a) 接收的参数可以是变量名,或是url字符串

    4.扩展
        请求上下文:
    request:请求对象,封装了客户端请求的参数信息;
    session:封装了客户信息,可以用来获取或设置用户信息
        应用上下文:
    g对象:临时请求过程中存储信息,请求结束后会被销毁
    current_app:在程序运行过程中,一直存在,保存程序的基本信息;
        请求钩子:
    before_first_request:在第一次请求前运行
    before_request:每次请求前运行
    after_request:在每次请求后运行,没有异常的情况下,指定后端返回的数据格式
    teardown_request:即使有异常的情况下,在每次请求后运行
        Flask扩展命令行:自定义ip和port,配合Migrate实现数据库的迁移;

    5. 模板
        模板的本质是文件,作用是接收视图的返回结果,渲染响应数据
        变量:存储视图返回的结果{{ 变量名 }}
        语句:控制输出
    {% if 表达式 %}
    {% endif %}
    项目中使用的artTemplate前端模板
    {{ each houses as houseas}}
    数据
    {{/each}}
        过滤器:本质是函数,作用计算或格式化输出数据
    常规的过滤器名:
    safe禁用模板转义
    capitalize首字符大写、title/lower/upper/formart/striptag/reverse
    列表处理:sum/sort/first/last
    过滤器的使用:可以链式调用,执行过程,从前到后,依次执行
        自定义过滤器:
    1、自定义函数,然后添加模板过滤器,app.add_template_filter(),第一个参数为函数名,第二个参数为自定义过滤器名称,如果过滤器名和内置过滤器重名,会重写内置过滤器;
    2、以装饰器的形式实现自定义过滤器,@app.template_filter(),只需要传入自定义的过滤器名
        WTF扩展:实现模板页面的表单代码的复用,以及表单数据的验证
    1、自定义表单类,需要继承自FlaskForm;
    2、指定表单字段,加入验证函数
    3、实例化表单对象,在模板页面中使用表单对象的字段
    设置secret_key,生成csrf_token加密口令,实现跨站请求保护,模板页面对应的表单域中需要设置form.csrf_token()
    验证器的调用:form.validate_on_submit()执行过程,会依次调用验证函数,其次验证页面中是否设置csrf_token,条件满足返回true,否则返回false
    4、表单数据的获取,需要使用表单对象,form.字段名.data
        wtf对应的csrfprotect模块可以生成session信息,实现跨站请求保护
        继承、宏、包含:
    1、继承:block,实现模板页面固定不变的区域,一般用来菜单,底部栏等,模板不支持多继承、继承的结束需要加上区域块的名称;建议继承语句写在模板页面的顶部
    2、宏:macro,实现模板页面功能代码块的封装,类似python中的函数
    3、包含:include,实现原始静态页面的完整复用,wtf表单对象不能复用;

    6. Flask中的特殊变量和方法
        config对象:保存配置信息,设置数据库的连接、secret_key,congfig可以导入配置文件,读取配置文件
        request:常用的属性:args/form/data/method/files,
    get_json()获取请求体中的json数据;
        url_for:反向解析,实现从视图函数找到具体的url
    一般用来配合redirect实现页面的重定向
        return redirect(url_for(视图函数名))
    重定向建议使用url_for,简化页面重定向的操作
        flash消息闪现,在视图中定义提示用户信息,
    在模板页面中使用循环展示提示用户信息for x in get_flashed_messages()

    7. 数据库
        Flask-SQLAlchemy扩展包
        实例化sqlalchemy对象,需要和应用程序实例进行关联db = sqlalchemy(app)
        首先,需要手动创建数据库,其次、配置数据库的连接和动态追踪修改
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost/database'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    在请求过程自动提交数据的设置,在未来版本中会被删除
        自定义模型类
    1、继承自db.Model
    2、指定表的名称,建议项目名和表名、单个表名建议使用复数
    3、定义字段,db.Column()指定字段的属性约束、主键、外键、唯一、默认值等;
    4、反向引用,us = db.relationship('USER',backre='role')
    实现一对多或多对一的查询:在数据库中没有具体的字段;
    us可以实现一对多的查询
    role可以实现多对一的查询,在多的一方指定外键
    多对多的关系映射,本质是两个一对多,数据的存储在第三张表
        db.session数据库会话对象,封装了对数据库的操作
    db.session.add()提交一条数据
    db.session.add_all()提交多条数据
    db.session.create_all()创建表
    db.session.drop_all()删除表
    db.session.rollback()回滚
        基本查询:
    User.query.get()接收的参数为主键
    User.query.filter(User.id=user_id)过滤查询,需要指定模型类的类名,需要加上执行器,all()/first()/order_by()
    User.query.filter_by(id=user_id)过滤查询,需要传入字段名进行过滤,需要加上执行器
    and_/or_/in_/notin_与或非
    排序order_by/分页limit/paginate
    更新数据:
    User.query.filter_by(id=user_id).update({'name':'itcast'})

    10. 蓝图
        类、模块化应用的容器;延迟创建路由映射
        创建蓝图对象:
    api = Blueprint('api',__name__)
        使用蓝图对象:
    @api.route()
    1、可以在创建蓝图对象的文件中使用
    2、可以导入其他文件中,但是需要把其他文件再次导入到当前创建蓝图对象的文件中,需要避免循环导入的问题,交错导入,
    3、注册蓝图路由,在创建应用程序实例的地方,app.register_blueprint(api.url_prefix='/api/v1.0') 

    11. 单元测试
        测试的目的:为了检验功能代码预期结果和实际结果的差距
        使用unittest测试模块
        单元测试的书写:本质是断言代码,
    1、自定义测试类,需要继承自unittest.TestCase
    2、测试方法,setUp()方法名不能改变,一般用来定义测试代码执行前的准备工作,包括创建客户端,指定连接数据库,构造程序实例等
    3、测试方法,teatDow()方法名不能改变,一般用来定义测试代码执行后的清除工作,比如清除测试数据,清空缓存等;
    4、测试方法的函数名必须test开头;assert断言测试结果

    12. 部署
        gunicorn -w 开启的进程数 -b 绑定的ip和port 启动文件名:程序实例名
        正向代理:面向客户端,服务器不知道访问的客户是谁
        反向代理:面向服务器:客户端不知道访问的服务器是谁

    13. REST ful API设计
        域名、版本、路径、请求方法、返回结果、状态码、错误信息、过滤信息、数据交互格式、链接相关资源

    14. 性能
        提高用户体验,减少响应时间
        性能优化:web前端优化、web后端优化、存储、运维优化
        后端优化:
    1、使用缓存,可以把大量访问,又不是经常修改的数据放入缓存中,比如项目首页信息
    2、使用异步:封装请求,实现对数据异步操作;
    3、多线程:线程数和硬件条件,以及对服务器的操作类型的不同而不同,IO密集型可以采取多线程的形式提高效率,计算型的任务不适合;
    4、存储优化;

     

    展开全文
  • Python之Flask框架Flask框架简介、安装、使用方法详细攻略 目录 Flask框架简介 Flask框架安装 Flask框架使用方法 1、小试牛刀,然后访问UR即可得到L Flask框架简介 对初学者来说,循序渐进是最...

    Python之Flask框架:Flask框架简介、安装、使用方法详细攻略

     

     

    目录

    Flask框架简介

    Flask框架安装

    Flask框架使用方法

    1、小试牛刀,然后访问UR即可得到L


     

     

    Flask框架简介

           对初学者来说,循序渐进是最重要的,我推荐学习 Flask(Welcome | Flask (A Python Microframework)
           Flask 很轻,花很少的成本就能够开发一个简单的网站。非常适合初学者学习。Flask 框架学会以后,可以考虑学习插件的使用。例如使用 WTForm + Flask-WTForm 来验证表单数据,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制。
    BTW:果壳网基于 Flask 开发的。

    1、各个主流框架对比

    Django Django:1个重武器,包含了web开发中常用的功能、组件的框架;(ORM、Session、Form、Admin、分页、中间件、信号、缓存、ContenType....);  
           Django。如楼上所说,是一个全能型框架。目前 Django 的使用面还是很广的,有学习的价值,但是不建议初学者学习,因为要学习的东西太多了,一下子难以吸收会失去兴趣。当然,Django 的目的是为了让开发者能够 快速 地开发一个网站,它提供了很多模块,其中我最喜欢的就是 admin 模块,http://your.site.com/admin 就进入了网站的后台(内置的哦~)方便地对数据进行操作,等等。。。。因此,如果对 Django 熟悉的话,papapa 一下子就写好一个网站的原型了。
    Tornado

    Tornado:2大特性就是异步非阻塞、原生支持WebSocket协议;  

    Tornado。传说中性能高高的框架。Tornado 是一个很好的框架,支持异步处理的功能,这是它的特点,其他框架不支持。另外一点是,Tornado 的设计似乎更注重 RESTful URL。但 Tornado 提供了网站基本需要使用的模块外,剩下的则需要开发者自己进行扩展。例如数据库操作,虽然内置了一个 database 的模块(后来独立出去了,现在叫做 torndb,bdarnell/torndb · GitHub)但是不支持 ORM,快速开发起来还是挺吃力的。如果需要 ORM 支持的话,还需要自己写一层将 SQLAlchemy 和 Tornado 联系起来,而且这里还有一个坑。
    BTW:知乎就是基础 Tornado 开发的。

    Flask Flask:功能和性能虽然不及Django和Tornado,但是Flask的第三方开源组件比丰富;http://flask.pocoo.org/extensions/  
    Bottle

    Bottle:比较简单;

    Bottle 和 Flask 都属于轻量级的 Web 框架。但是 Bottle 似乎落寞了。我觉得跟他的 API 设计有关系。个人认为 Bottle 使用起来不那么顺手,因此也用得少。这里不做太多介绍。

    web2py web2py。也是很轻的一个框架,使用不多,也不做介绍。
    5. web2py。我看楼上都没有对这个框架做介绍。这个框架是 Google 在 web.py 基础上二次开发而来的,兼容 GAE 。性能据说很高,曾经用他来做自己的主页,感觉也还不错。缺点同样是对扩展支持不太好,需要自己进行扩展。
    Quixote Quixote:著名的 豆瓣 就是基于 Quixote 开发的。跟上面几个框架不同,Quixote 的路由会有些特别。另外 Quixote 的性能据说也好。

    总结:小型web应用设计的功能点不多使用Flask;  大型web应用设计的功能点比较多使用的组件也会比较多,使用Django(自带功能多不用去找插件);  如果追求性能可以考虑Tornado;     

     

    Flask框架安装

    Flask的socket是基于Werkzeug 实现的,模板语言依赖jinja2模板,在使用Flask之前需要安装一下;

    pip install flask

     

     

    Flask框架使用方法

    1、小试牛刀,然后访问UR即可得到L

    from flask import Flask
    
    app=Flask(__name__) #创建1个Flask实例
    
    @app.route('/')      #路由系统生成 视图对应url,1. decorator=app.route() 2. decorator(first_flask)
    def first_flask():    #视图函数
        return 'Hello World'  #response
    
    if __name__ == '__main__':
        app.run()              #启动socket

     

     

    相关文章

    PythonWEB框架之Flask
    Python 有哪些好的 Web 框架?


     

    展开全文
  • flask框架先来给大家介绍一下flask框架flask框架是单文件微架构,轻量级Python web框架 在此基础上你可以使用你喜欢的方式来开发,对于有基础的同学,可以最大的解放你的战斗力。这是flask的文档:...
  • 目录Flask框架一、Flask框架简介1、简介:2、特点:二、虚拟环境1、全局环境变量2、创建虚拟环境三、PyCharm 项目创建四、Flask框架第一个程序1、flask第1个程序2、DEBUG模式3、配置文件4、URL和函数视图4.1、URL:...
  • 初识Flask框架: 1.简介 Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask也被称为“microframework”,因为最大的特征是轻便,让开发者自由灵活的兼容要开发的...
  • Flask 框架是 Python 中一个比较重要的框架,在开发网站中极具优势,下面进行具体介绍。FIask框架简介Flask 是当前流行的 Web 网站框架,它是基于 Python 实现的。Flask 是一种轻量级的 Web 应用框架。轻量级意味着...
  • flask框架源码

    2018-08-12 22:54:12
    flask框架源码 。
  • Flask框架<介绍>: Flask 官网上对它的定位是一个“微” python web 开发框架,python 语言 web 框架很多:Django、Tornado、webpy、bottle……,flask 的特点是简单可扩展。简单有几个方面,比如它只实现 web...
  • flask框架原理

    2017-09-02 16:25:13
    描述了web服务器和flask的关系;对web服务器和flask框架的搭建给了建议;初学者可以快速对flask框架有清晰的认识!
  • Python之Flask框架Flask框架简介、安装、使用方法详细攻略目录Flask框架简介Flask框架安装Flask框架使用方法1、小试牛刀,然后访问UR即可得到LFlask框架简介 对初学者来说,循序渐进是最重要的,我推荐学习 Flask...
  • Flask框架的特点1.轻巧2.简洁3.扩展性强(个人认为最重要的特点)4.核心(werkzeug和jinja2)jinja2就是指模板引擎。Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为...
  • Python 使用 Flask框架记录1、安装Flask​Flask依赖两个外部库,Werkzeug和Jinja2,Werkzeug是一个WSGI(服务器网关接口)。Jinja2时负责渲染模板。在安装Flask之前需要安装这俩个外部库,最简单的安装方式是使用...
  • 主要介绍了Flask框架Flask-Login用法,结合实例形式分析了Flask-Login插件进行登录验证的相关操作技巧与注意事项,需要的朋友可以参考下
  • 主要介绍了Flask框架Flask-Principal基本用法,结合实例形式分析了Flask框架flask-principal扩展的基本功能、安装、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 本文实例讲述了Flask框架搭建虚拟环境的步骤。分享给大家供大家参考,具体如下:为什么要搭建虚拟环境?在开发过程中, 当需要使用python的某些工具包/框架时需要联网安装比如联网安装Flask框架flask-0.10.1版本sudo ...
  • Django和Flask框架的区别是什么?Python中Django框架和Flask框架都是比较常见的,在开发应用系统时,使用框架可以提升开发效率,让应用开发更加规范、拓展性更强,程序员把更多的精力放在业务逻辑的实现上,而不是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,990
精华内容 7,196
关键字:

flask框架