• [Flask笔记]一个完整的Flask程序


    前面讲过Flask是一个轻量级Web开发框架,为什么说是轻量级的呢,因为它用短短几行代码就能运行起来,我们一起来看看最简单的flask框架。

    安装Flask

    在看Flask框架之前我们需要先安装flask模块,学过python的肯定都知道,flask模块安装其实很简单,直接使用命令

    pip install flask
    

    就可以安装好了,这里要提一点,如果你安装模块时,遇到下载失败的情况,大部分是因为python默认使用官方的下载模块地址下载,而这个地址在国内访问有时不太稳定,这里推荐使用清华的下载源下载,速度能快很多,也不会经常出现报错、超时问题。

    https://pypi.tuna.tsinghua.edu.cn/simple
    

    使用方法也很简单,用两种方法,第一种是在pip中加个-i的参数,后面加网址,就会从这个地址下载模块,如下

    pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    上面这种方法只能是临时下载使用,不能让下载源永久变更,这里提供另一种方法,去变更默认下载源

    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

    变更后,可通过pip config list查看是否更改成功,如果更改成功,会显示如下

    (.venv) ❯❯ pip config list
    global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
    

    一个最小且完整的Flask程序

    Flask安装成功后,我们就可以看一个示例了,这是一个完整的flask程序,也是flask运行起来需要的小单元,我们将以下代码保存到一个py文件中,如my_flask.py

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return "Hello, World!"
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    如上面的代码所示,短短10行代码,就可以让flask跑起来,所以说flask是一个轻量级的web框架。别看上面的代码短,但是它五脏俱全,包含了flask运行起来的所有内容,应用实例、路由和视图函数就构成了一个最简单的Flask程序

    应用实例

    应用实例,实际上就是Flask的应用对象,这里说的对象可不是你的女朋友,而是一个可以包含请求处理、路由分发、视图函数调用的Web应用核心,也就是那句app = Flask(__name__),如果我们去看Flask这个实例的源码就能发现,里面包含了很多内容,如运行启动参数、路由规则、收发请求的方式定义等等,这里就不详细展开说了。

    路由

    路由是用来处理URL和函数之间对应关系的。这里我们就必须要讲下web的整个工作原理,来方便理解,首先看下图
    在这里插入图片描述
    Web浏览器发起请求,Web服务器收到请求并把请求发送给Flask应用程序,Flask应用程序收到请求的URL后,找对应的处理函数,这就是整个路由的工作原理。
    而对应到上面的程序,就是那个函数

    @app.route('/')
    def index():
        return "Hello, World!"
    

    如果python学的相对深入一点儿的话,就能知道上面代码中的@app.route('/')是一个装饰器,用来注册视图函数,其后括号中的内容就是要使用的路径,'/'就表示根路径,即http://127.0.0.1:5000;如果改为‘/login/’就表示使用login路径,即http://127.0.0.1:5000/login/;如果写成'/user/'就变成了动态可变路由,即那个会根据传输的内容动态变化,比如http://127.0.0.1:5000/user/jay,这个jay就需要浏览器附倒路由中。
    这是Flask中给做了简化,方便使用,实际传统方式定义路由并非使用装饰器,由于传统方式已经不常用,这里就不详细说了。
    路由这里还有一点必须提下,那就是Flask的动态可变路由仅支持string、int、float、path几种类型,比如上面的就是用的string类型,这个类型默认是不用写出来的,可以匹配除斜线(/)之外的任何字符序列。而其他几个类型,如果需要识别,就要写出类型,如'/path/'

    视图函数

    视图函数,就是处理入站请求的函数,也就是路由中定义的那个函数

    def index():
        return "Hello, World!"
    

    上面这个函数,就是所谓的视图函数。它是用来处理进来的请求,并返回响应的。

    响应

    上面提到了返回响应,那响应是什么呢?响应就是视图函数中返回的值,可以是字符串,也可以是复杂的表单,还可以用Flask提供的render_template()函数来返回一个html,同时响应还可以直接使用redirect()函数将路由重定向。

    启动

    上面将了Flask程序的五脏,还少一个入口让Flask运行起来,也就是这个代码中的最后2行

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

    第一行if __name__ == '__main__':,学过python的都知道这是python的入口方式,也就是将当前文件或模块当作主程序直接运行。
    第二行app.run(debug=True)则是来调用上面创建的Flask对象,并执行run()函数,让Flask运行起来,而其中的debug是作为参数,传给run()函数的,让Flask知道是在调试模式下启动,在调试模式中Flask会自动加载 重载器 和 调试器。
    然后我们到命令行,进入my_flask.py文件的目录,命令行输入python my_flask.py即可启动程序,如下图所示。
    在这里插入图片描述
    我们打开浏览器输入http://127.0.0.1:5000即可看到Hello, World!,如下图
    在这里插入图片描述

    到此,我们的这个完整的Flask程序应有的概念就都讲完了,当然,这都是最基础的内容,要想完整开发一个基于flask的web应用还有很多要学习的,如模版、数据库、前端技术等等,笔者也是边学边写,也是借鉴费曼学习法,让自己记得更牢,如果写的过程中有什么疏漏和错误,还请各位指出。

  • 相关阅读:
    OpenCV模块介绍
    【JAVA】我一定要重写equals()和hashCode()方法吗?
    坐标休斯顿,TDengine 受邀参与第九届石油天然气数字化大会
    第10讲:DQL数据查询语句之LIMIT分页查询示例
    移动硬盘被格式化了如何恢复数据?四步教你如何恢复
    go: no such tool “compile“(一次糟糕体验)
    一篇图解Linux内存碎片整理
    YB2410是一种高效的同步步进能够输送2A负载的降压DC/DC转换器
    Python如何解决点选验证码的登录识别(2)
    编程狂人|淘宝Native研发模式的演进与思考 | DX研发模式
  • 原文地址:https://blog.csdn.net/jayhgq/article/details/140349947