初始Flask
一、虚拟环境
在学习fladk前先了解一下虚拟环境
1.什么是虚拟环境
虚拟环境是隔离的Python解释器环境, 是一个独立的python开发环境。
这样做的好处是可以为每一个项目创建独立的Python环境,使用虚拟环境可以保持全局
Python环境的干净,避免包和版本的混乱,并且方便区分和记录每个项目的依赖。
2.如何创建虚拟环境
-
第一步: 安装virtualenv
在windows的开发环境安装过程, 使用virtualenv
pip install virtualenvwrapper-win
-
第二步: 创建虚拟环境
mkvirtualenv flask_01_env
3.virtualenv常用命令
1.切换到指定环境: workon flask_01_env
2.退出虚拟环境: deactivate
3.删除指定的虚拟环境: rmvirtualenv flask_01env
4.列出所有虚拟环境: lsvirtualenv
5.进入到虚拟环境目录: cdvirtualenv
6.在虚拟环境中创建flask: pip install flask
4.创建virtualenv虚拟环境环境变量
ps: 配置virtualevn在安装virtualevn-win后,这样虚拟环境就安装在你所指定的环境路径下
二、创建一个最简单的Flask程序
-
第一步:打开pycharm(专业版)新建一个项目
-
第二步:使用pycharm新建flask项目选项
三、解读Flask程序
3.1目录说明
1.static文件夹”用于存放各种静态文件css、js、图片等等
2."templates文件夹"用于存放html模板文件
3.“app.py"为我们的主文件,启动项目需要启动该文件
ps: 注意!app.py文件名字我们可以自由命名, 但出了flask.py这种和Flask库相冲突的名字
3.2代码说明
app文件主代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
if __name__ == '__main__':
app.run()
- 第一部分
from flask import Flask
app = Flask(__name__)
导入安装好的flask包,通过flask包导入Flask类, Flask类即为Flask的核心, 实例化这个Flask类得到一个实例化对象app
name 类中特殊参数, Python会根据所处的模块来赋予__name__变量相应的值, 对于我们的程序来说, 这个值为app
- 第二部分
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route(‘/’)是用来匹配url,在flask当中是以装饰器来实现的,装饰应用的是第一部分当中实例化flask类出来的对象
hello_world函数为视图函数,如果匹配到了路径会触发视图函数并直接, 通过return返回具体数据给前端或者移动端
- 第三部分
if __name__ == '__main__':
app.run()
app.run()实现flask程序在开发环境下运行起来, 并且默认ip和短时是127.0.0.1:5000
查看app.run源码,在内部定义了幕刃的ip和端口,并且调用了werkzeug.serving,此方法为我们创建
一个开发服务器(由依赖包WerKeug提供)。
3.3WerKeug简介
WerKeug其实就是WSGI工具包, 是web框架的底层库, werkzeug不是web服务器, 也不是web框架。
在werkzeug中封装了许多web框架所需东西, 比如:Request, Response等等。
示例代码:
from werkzeug.wrappers import Request, Response
@Request.application
def hello_work(request):
return Response('Hello World')
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, hello_work)
这里代码与app.py代码相似, flask就是依赖于werkzeug模块, 有werkzeug模块来实现socket服务端的工
hello_work需要使用括号括起来才会运行, 在flask中app.run()也会调用run_simple(host,port,self, **options)
把上面代hello_work替换成self也就是app,app()会自动触发Flask类中的__call__方法。
所以flask陈旭的入口就是__call__方法, 而__call__方法返回self.wsgi_app(environ, start_response)
这样来看整个程序是运行在self.wsgi_app(environ, start_response)中
3.4项目的运行
运行项目见下图
运行后访问
3.5Debug模式
Debug模式用来做什么
1.flask代码如果出现异常, 我们在浏览中不会提示具体信息,开始debug模式后把错误信息发送到浏览器上
2.flask代码如果被修改了, 必须要重启项目修改的代码才会有小, 开启debug模式后, 只需要保存项目中的文件,flask会自动帮我重现
- 示例代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def get_list_num():
list_num = [1, 2, 3, 4]
print(list_num[4])
return "获取不到呀"
if __name__ == '__main__':
app.run()
未开始debug访问
开启debug后访问
- 使用pycharm开启debug失败可以进行一下操作
1.点击 左上角菜单栏的run按钮,并点击 edit configuration
2.FLSAK_DEBUG 后面的勾选上
3.6开启debug的方式
- 第一种
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
- 第二种
from flask import Flask
app = Flask(__name__)
app.debug = True
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
if __name__ == '__main__':
app.run()
- 第三种
from flask import Flask
app = Flask(__name__)
app.config.update(debug=True)
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
if __name__ == '__main__':
app.run()
- 第四种
需要在app.py所在的目录下,再创建一个config.py, 来配置flask项目。
DEBUG = True
import config
from flask import Flask
app = Flask(__name__)
app.config.from_object(config)
@app.route('/')
def get_list_num():
list_num = [1, 2, 3, 4]
print(list_num[5])
return "获取不到呀"
if __name__ == '__main__':
app.run()
Flask
app = Flask(__name__)
app.config.from_object(config)
@app.route('/')
def get_list_num():
list_num = [1, 2, 3, 4]
print(list_num[5])
return "获取不到呀"
if __name__ == '__main__':
app.run()