美文网首页
web应用框架——初识Flask+入门示例

web应用框架——初识Flask+入门示例

作者: 思君_4cd3 | 来源:发表于2020-05-30 21:22 被阅读0次

    一、初识Flask

    Flask优点

    1.Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
    2.入门简单,即便没有多少web开发经验,也能很快做出网站
    3.非常适用于小型网站
    4.非常适用于开发web服务的API
    5.开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
    6.各方面性能均等于或优于Django
    7.Django自带的或第三方的好评如潮的功能,8.Flask上总会找到与之类似第三方库
    9.Flask灵活开发,Python高手基本都会喜欢10.Flask,但对Django却可能褒贬不一
    11.Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
    12.Flask比Django更加Pythonic,与Python的philosophy更加吻合

    二、Flask简介

    Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。

    Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验证等。Flask没有默认使用的数据库,你可以选择MySQL,也可以用NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块) ,模板引擎则使用 Jinja2 。

    可以说Flask框架的核心就是Werkzeug和Jinja2。

    Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。
    Flask的Github地址:https://github.com/pallets/flask
    Flask中文文档地址:http://docs.jinkan.org/docs/flask/

    三、入门程序示例

    1.Hello World

    • 配置虚拟环境
      使用虚拟环境安装Flask,可以避免包的混乱和版本的冲突,虚拟环境是Python解释器的副本,在虚拟环境中你可以安装扩展包,为每个程序单独创建的虚拟环境,可以保证程序只能访问虚拟环境中的包。而不会影响系统中安装的全局Python解释器,从而保证全局解释器的整洁。
    pip install virtualenv
    pip install virtualenvwrapper-win
    

    (这些在我们安装Django的时候就已经配置好了~)

    • 配置环境变量
    mkvirtualenv flask_virl
    
    • 查看列表
    pip list
    
    • 进入虚拟环境
    workon flask_virl
    
    • 退出虚拟环境
    deactivate flask_virl
    
    • 安装Flask
    指定Flask版本安装
    pip install flask==0.10.1
    安装最新版本
    pip install flask
    
    • 再次显示


    • 打开pycharm创建项目






    • 创建一个helloworld.py文件


    • 写入代码
    from flask import Flask
    
    #Flask接受一个参数  __name__ ,他会指向程序所在的包
    app = Flask(__name__)
    
    #装饰器的作用是将路由映射到视图函数index上
    @app.route('/')
    def index():
        return "helloworld"
    
    if __name__ == '__main__':
        app.run()
    
    • 代码的详细讲解
    # 导入Flask类
    from flask import Flask
    
    #Flask类接收一个参数__name__
    # __name__表示当前模块的名字
    #模块名传入的意义
    #flask以这个模块所在的目录为总目录
    # 默认这个目录中的static文件夹为静态文件目录
    # templates为 模板目录
    import demo
    app = Flask(__name__)
    
    # 装饰器的作用是将路由映射到视图函数index
    
    @app.route('/')
    def index():
        """定义视图视图函数"""
        return 'Hello World!'
    
    # Flask应用程序实例的run方法启动WEB服务器
    # 如果当前模块作为启动模块, __name__ 就是 __main__
    # 如果是导入这个模块当做包被导入,__name__ 是文件的名字
    if __name__ == '__main__':
        app.run()
    
    • 点击网页查看结果


    • shell命令
    flask shell
    

    我们会发现它报错,这样的话我们把刚刚的helloworld.py文件名字修改为app.py文件



    在运行一遍刚刚的命令就会成功啦:


    app
    app.url_map
    

    这个就是我们所说的装饰器的作用,将路由映射到视图函数上

    2.静态文件访问

    • 如果我们将static文件夹换成statics


    • 我们将修改后的网址登陆一下:
      http://127.0.0.1:5000/statics/index.html

      会发现显示404
    • 打开app.py文件
      我们将鼠标放在Flask上面,按住CTRL,点击进入Flask源代码



      我们可以看到它的一些参数


    • 打开app.py文件,修改内容
    app = 
    Flask(__name__,static_folder='statics')
    #static_url_path=静态文件的访问路径,默认为statics
    #static_folder="static",
    #template_folder="templates"
    

    四.程序加载配置的三种方法

    1.从配置对象中加载(常用的)
    app.config.from_object()
    2.配置文件中加载
    app.config.from_pyfile()
    2.从环境变量中加载(了解)
    app.config.from_envvar()

    1.从配置对象中加载

    from flask import Flask
    
    #配置对象,里面定义需要给app添加一系列配置
    class Config(object):
        DEBUG = True  #在修改代码之后直接保存,会自动重启服务器
    #Flask接受一个参数  __name__ ,他会指向程序所在的包
    app = Flask(__name__,static_folder='statics')
    #static_url_path=静态文件的访问路径,默认为statics
    #static_folder="static",
    #template_folder="templates"
    
    #1.从配置对象中加载(常用的)
    #app.config.from_object()
    app.config.from_object(Config)
    #2.配置文件中加载
    #app.config.from_pyfile()
    #2.从环境变量中加载(了解)
    #app.config.from_envvar()
    
    #装饰器的作用是将路由映射到视图函数index上
    @app.route('/')
    def index():
        return "helloworld"
    
    if __name__ == '__main__':
        app.run()
    
    • 运行程序


    • 添加代码再次运行



      他会直接保存,重启服务器

    1.从配置文件中加载

    • 新创建一个config.ini文件


    • 添加内容
    #在此文件添加一些系列配置,一行一个
    DEBUG = True
    
    • 打开app.py文件



    • 添加新的内容




      下面会自动刷新

    3.指定ip端口

    app.run(host='localhost',port=5001,debug=True)
    

    五、Postman

    Postman安装包链接:https://pan.baidu.com/s/1QVPJrbJ71GAq57Z3_UsGQg
    提取码:fqnj

    接下来我们下载这个postman软件,下载后的页面:



    image.png
    • 将我们刚刚的网址输入进去


    • 打开app.py文件
    @app.route('/demo1')
    def demo1():
        return "hhhh"
    

    六、给路由传参

    1.所有Flask程序必须有一个程序实例

    Flask调用视图函数后,会将视图函数的返回值作为响应的内容,返回给客户端。一般情况下,响应内容主要是字符串和状态码。

    当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例。WSGI是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析HTTP请求、发送HTTP,响应等等的这些底层的代码和操作,使开发者可以高效的编写Web应用。

    程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。根据每个URL请求,找到具体的视图函数。 在Flask程序中,路由的实现一般是通过程序实例的route装饰器实现。route装饰器内部会调用add_url_route()方法实现路由注册。

    调用视图函数,获取响应数据后,把数据传入HTML模板文件中,模板引擎负责渲染响应数据,然后由Flask返回响应数据给浏览器,最后浏览器处理返回的结果显示给客户端。

    2.给路由传参示例

    有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数 来显示不同用户的个人信息。

    • 在app.py中增加一个路由
    @app.route('/user/<user_id>')
    def user_info(user_id):
        return 'hello{}'.format(user_id)
    

    • 定义输入内容类型
    # 路由传递的参数默认当做string处理,这里指定int,尖括号中冒号后面的内容是动态的
    @app.route('/user/<int:user_id>')
    def user_info(user_id):
        return 'hello{}'.format(user_id)
    
    • 运行程序:
      当输入字母的时候:



      当输入数字的时候:


    • 指定请求方式
    from flask import request
    
    #指定请求方式,默认是get
    
    @app.route('/demo2',methods=['GET','POST'])
    def demo2():
        return request.method
    



    (此文章仅作为个人学习笔记使用,如有错误欢迎指正~)

    相关文章

      网友评论

          本文标题:web应用框架——初识Flask+入门示例

          本文链接:https://www.haomeiwen.com/subject/dsyzahtx.html