热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

3第一个flask程序

1pycharm新建项目    注意如果找不到虚拟环境路径可以参考虚拟环境其他命令lsvirtualenv#列出所有的虚拟环境workonflaskenv#切换到指定的虚拟环境cd

1 pycharm新建项目

 

 

 

 

注意 如果找不到虚拟环境路径可以参考虚拟环境其他命令

lsvirtualenv # 列出所有的虚拟环境
workon flaskenv # 切换到指定的虚拟环境
cdvirtualenv # 切换到指定的虚拟环境路径 该目录就是我们所要的路径

2 第一个flask程序

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()

 

 


3 代码拆分为三部分


第一部分

from flask import Flask
app = Flask(__name__)

导入我们安装好的flask包,通过flask包导入Flask类,Flask类即为Flask的核心,实例化这个Flask类的到一个实例化对象app。

__name__这个特殊的参数:Python会根据所处的模块来赋予__name__变量相应的值,对于我们的程序来说(app.py),这个值为app。


第二部分

@app.route('/')
def hello_world():
return 'Hello World!'

如果有过对其他web框架的了解,相信看见这个已经看出了一些门道。没错这个 @app.route('/')就是用来匹配url的,在我们的flask里面是以装饰器来实现的,装饰器引用的也是我们上面实例化核心类出来的对象。

那么如果路由下面跟的函数什么呢 ?没错就是我们的视图函数,如果匹配到了路由就会触发我们的视图函数执行,并且return回具体的数据给前端或者移动端。

不是很理解没关系,我们先大概有个印象,会在接下来的章节详细讲解路由以及视图函数的使用

第三部分

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

先不管逻辑判断,先看 app.run(), app.run()源码如下去阅读源码不难发现,在内部定义了默认的 ip+端口为127.0.0.1:5000,并且调用了werkzeug.serving为我们创建了一个开发服务器(由依赖包Werkzeug提供),对套接字有一定了解的朋友,其内部就是做了一个循环监听的功能以便交互.

关键词:app.run()实现了flask程序在开发环境下运行起来,并且默认ip和端口是127.0.0.1:5000

def run(self, host=None, port=None, debug=None,
load_dotenv=True, **options):

...

_host ='127.0.0.1'
_port = 5000

...

host = host or sn_host or _host
port = int(port or sn_port or _port)

...

from werkzeug.serving import run_simple
try:
run_simple(host, port, self, **options)
finally:
# reset the first request information if the development server
# reset normally. This makes it possible to restart the server
# without reloader and that stuff from an interactive shell.
self._got_first_request = False

在第三部分中还有一个if判断,那么这个判断的作用是什么呢,有python基础的朋友对这个写法大概不陌生,if逻辑判断时只有本文件为执行文件的时候才会执行,为什么要这么设计呢?因为在开发环境我们是以app.py作为执行文件,但是在真实的生产环境下 ,此文件会作为被调用的文件,并且真实的生成环境不会用到app.run()做监听分配, 原因是性能太低了,

关键词:保证了app.run()只用于开发环境,并且不影响真实的生产环境。

三部分串讲

导入Flask的核心类实例化对象app,然后app作为装饰器使用匹配url分发给下面的视图函数,然后执行该页面会触发app调用run()方法运行起来整个项目。



推荐阅读
author-avatar
单身王子550130
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有