Flask:Hello World

Flask是一个基于Python的Web框架,与Django不同的是它没有为开发者做过多的选择而且很容易进行替换,开发者可以选择自己喜欢的方式来构建应用,小巧灵活。

使用pip进行包管理

目前主流的Python管理工具,已经内置进Python开发包中

基本操作

安装一个包,该命令还可以安装wheel二进制包(后缀为.whl的文件)

1
pip install 包名

批量安装文件中指定的包,文件名通常指定为:requirements.txt

1
pip install -r 文件名

卸载包

1
pip uninstall 包名

在镜像源中搜索一个包

1
pip search 包名

列出本机安装的所有包,显示格式为:包名 (版本号)

1
pip list

另一种方式列出本机安装的所有包,显示格式为:包名==版本号,可以利用系统的输出重定向命令(>)导出为一个文件,该命令通常结合批量安装命令使用

1
pip freeze

使用虚拟环境:VirtualEnv

在虚拟环境中你可以安装任意包而不会影响宿主机,可以避免包的版本冲突问题

安装

使用pip方式安装

1
pip install virtualenv

创建虚拟环境

1
virtualenv 环境名

执行命令后会发现多出了一个以环境名命名的文件夹,操作系统的不同生成的文件内容也会不同,Windows下会有一个Script文件夹,而Linux下会有一个bin文件夹

启动虚拟环境

进入上面提到的文件夹内执行以下命令

1
2
3
4
5
# Linux
source activate

# Windows
activate.bat

启动虚拟环境后会发现命令提示符前面多了一个前缀:(环境名)

退出虚拟环境

1
2
3
4
5
# Linux
deactivate

# Windows
deactivate.bat

第一个程序

在编写第一个程序前需要先安装Flask包

1
pip install flask

编写程序

1
2
3
4
5
6
7
8
9
10
from flask import Flask

app = Flask(__name__)

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

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

运行后如果没有报错,打开提示的网址即可查看效果

代码说明

app = Flask(__name__): Flask会根据传入的字符串来定位静态文件和模版文件的位置,如果字符串值为__main__则会查找该文件所在文件夹内的static和templates,否则去字符串指定的文件夹下查找(该文件夹必须为一Python包,也就是说该文件夹下必须有一个__init__.py文件)

@app.route(“/“): 将函数绑定到一URL上当访问该URL时会执行该函数,函数可以与多个URL进行绑定。也可以不通过装饰器的形式绑定URL,在定义完函数后添加绑定

1
2
3
def index():
return "Hello World"
app.add_url_rule("/", view_func=index)

index函数: 如果函数返回的是字符串,Flask会将该字符串包装成一个响应对象

开启调试模式

开启调试模式后能在页面上显示详细的错误信息
方式一:

1
2
if __name__ == "__main__":
app.run(debug=True)

方式二:

1
2
app = Flask(__name__)
app.debug = True

方式三: 此处的 DEBUG 必须为大写

1
2
app = Flask(__name__)
app.config["DEBUG"] = True

方式四: 提供一个配置文件该配置文件为一Python脚本文件

1
2
# 配置文件名可任意,推荐config.py
DEBUG = True

修改代码

1
2
3
app = Flask(__name__)
import config
app.config.from_object(config)

注: from_object如果传入的是字符串,底层会通过反射加载以此命名的模块,在该模块中扫描大写的变量并加载进配置

在Windows上如果打开调试模式有可能会遇到如下错误

OSError: [WinError 10038] 在一个非套接字上尝试了一个操作

可以通过如下命令解决(需要重启计算机)

1
netsh winsock reset

本文参考资料:《Python Web开发实战》

  • 本文作者: Harmel
  • 本文链接: http://www.harmel.cn/2018/08/flask-hello.html
  • 版权声明: 文章如无特别说明,则表明该文章为原创文章,如需要转载,请注明出处。
  • 本站说明: 本站使用阿里云服务器,如果您喜欢我的网站,欢迎收藏,能捐赠支持一下就再好不过了。