介绍Python可以做很多事情,虽然它的强项在于向量运算、机器学习和深度学习。但是在某些时候,我们还是需要使用python对外提供web服务。比如我们现在有一个用python写的模型算法。该模型算法需要接收前端的输入,然后进行仿真运算,最后得到最终的输出。这个过程是一个典型的网络服务。除了使用java或者nodejs来搭建web服务器,我们可以使用python自带的web框架来实现这个目的。在减少技术栈的同时,我们还可以实现代码逻辑的统一。为什么不这样做呢?其实python的web框架有很多种,比如django、flask等等。在本系列文章中,我们将介绍Flask这个轻量级的Web框架。web框架的重要部分相信大家都用过很多web框架,从java的springMVC到nodejs的express、koa,有的功能复杂,有的功能简单。但不管它们的功能是什么,最重要也是最基本的功能就是提供web服务,也就是说可以接收HTTP或者HTTPS的请求,并返回相应的数据。该功能通常包括核心路由跳转功能。有了这个核心功能,web框架就基本可以正常运行了。配合现在流行的前后端分离技术,一切水到渠成。如果不想前后端分离,那么web框架还需要涉及到页面的渲染技术。一般来说,前端页面的呈现形式是使用模板引擎。然后再加上数据库、缓存、消息队列、静态资源、日志、调试等功能,一个完整的web框架就完成了。Flask虽然是一个轻量级的web框架,但是该有的功能它都有。其核心是提供对web路由的支持,支持Jinja的模板语言。flask快速入门flask是一个非常简洁优雅的web框架,flask需要Python3.7及以上版本的支持。为了区分python不同的开发环境,我们在使用flask的时候,可以使用python自带的venv创建不同的虚拟环境。venv和conda的env很像,都是用来创建虚拟环境,从而实现不同环境的分离。使用venv非常简单。如果你使用的开发工具是pycharm,那么在创建pythonflask项目时,会自动选择对应的虚拟环境创建工具。这里我们选择使用venv自动创建。当然你也可以使用如下命令手动创建venv:$mkdirlearn-flask$cdlearn-flask$python3-mvenvvenv创建好venv后,使用以下命令激活这个env:.venv/bin/activatevenvinstall完成后,我们可以使用如下命令来安装flask:pipinstallFlask安装完成后,可以在python项目site-packages中找到flask对应的依赖包:可以看到除了flask还有其他的包party依赖包,这些可以在后续的flask应用程序中使用。Flask的第一个应用在flask的依赖包全部安装好之后,我们就可以写一个最简单的web应用了。我们将这个应用程序命名为first.py:fromflaskimportFlaskapp=Flask(__name__)@app.route('/')deffirst():return"
Thisismyfirstflaskprogram!
"if__name__=='__main__':app.run()和plainpython程序的区别在于这里我们先实例化一个Flask对象,然后在第一个方法上用类似注解的方式定义一个路由。程序编写完成后,如果在pycharmIDE中,右键运行,可以得到如下内容:FLASK_APP=first.pyFLASK_ENV=developmentFLASK_DEBUG=0在文件夹/Users/data/git/ddean2009/learn-flask/Users/data/git/ddean2009/learn-flask/venv/bin/python-mflaskrun*ServingFlaskapp'first.py'*调试模式:关闭警告:这是一个开发服务器。不要在生产部署中使用它。请改用生产WSGI服务器。*运行在http://127.0.0.1:5000可以看到IDE为我们设置了几个环境变量,分别是FLASK_APP:表示要运行的app名称。FLASK_ENV:表示当前运行环境是开发环境还是线上环境。FLASK_DEBUG表示是否处于调试模式。最后我们访问默认的http://127.0.0.1:5000,可以得到如下内容:说明整个程序运行成功。如果想通过命令行执行flask应用,可以使用如下命令:flask--appfirstrun注意这里我们添加了--app参数来指定要运行的app的名称。如果未指定,flask将查找名为app.py或wsgi.py的文件。如果你有这两个文件,可以直接用flaskrun运行。这里的flask相当于python-mflask。默认情况下,只能通过本地浏览器访问Flask应用程序。如果想远程访问,可以指定访问主机,如下:flaskrun--host=0.0.0.0到这里,我们的一个基本最简单的flaskweb应用就完成了。什么?你还想了解更多吗?别着急,下面就为大家详细介绍一些Web应用必须了解的知识。Flask中的路由也叫Routing,是Web应用的灵魂,通过路由定义各种URL和访问路径。在flask中,可以使用@app.route定义路由。@app.route类似于注解,可以放在python方法上。route中可以定义route的名字,route的名字可以和方法的名字不一样:@app.route('/test')deftest123():return'我是测试'路由的名字也可以是动态的,可以取一个和注解方法中的参数名相同的参数名作为路由的参数,用尖括号括起来,如下所示:frommarkupsafeimportescape@app.route('/student/