文章目录
- 一、创建程序实例并注册路由
- 1. 为视图绑定绑定多个URL
- 2. 动态URL
- 二、启动开发服务器
- 1. 自动发现程序实例
- 2. 管理环境变量
- 3. 使用pycharm运行服务器
- 4. 更多的启动选项
- 5. 设置运行环境
- 6. 调试器
- 7. 重载器
一、创建程序实例并注册路由
app.py
# 从flask包中导入flask类
from flask import Flask
# 实例化Flask类
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello,Flask!<h1/>'
Flask(name) 会使用当前模块的名称作为参数,以便确定程序的根目录,从而能够找到静态文件夹和模板文件夹。
只需为函数附加app.route()装饰器,并传入URL规则做为参数,我们就可以让URL和函数建立关联。这个过程我们称作注册路由。路由负责管理URL和函数之间的映射,而这个函数则被称为视图函数。
1. 为视图绑定绑定多个URL
一个视图函数可以绑定多个URL。比如下面访问’/‘和访问’/hello’都会触发index函数,得到相同响应。
@app.route('/')
@app.route('/hello')
def index():
return '<h1>Hello,Flask!<h1/>'
2. 动态URL
我们不仅可以为视图函数绑定多个URL,还可以在URL规则中添加变量部分。
使用"<变量>"的形式。flask处理请求时会把变量传入视图函数,我们可以添加参数获取这个变量值。如果用户访问的url中没有添加变量,此时会返回一个404错误,这时我们可以通过添加默认参数defaluts或者设置name的默认值来设置url变量的默认值,以避免404错误。
@app.route('/')
@app.route('/hello/<name>', defaults={'name': "zly"})
def index(name='zly'):
return '<h1>Hello,%s!<h1/>' % name
二、启动开发服务器
flask内置了一个简单的开发服务器(由依赖包Werkzeug提供),足够在开发环境中使用。
flask run # 启动开发服务器
1. 自动发现程序实例
启动开发服务器后,flask可以自动探测程序实例,自动探测以下规则:
- 从当前目录寻找app.py和wsgi.py模块,并从中寻找app或application的程序实例。
- 从环境变量FLASK_APP对应的模块/导入路径寻找名为app或application的程序实例。
2. 管理环境变量
如果安装了python-dotenv模块,那么在使用flask run 或其它命令时它自动从.flaskenv文件和.env文件中加载环境变量。
优先级:
手动设置的环境变量>.env文件>.flaskenv文件
在.env文件中添加:
FLASK_RUN_HOST=0.0.0.0
FLASK_RUN_PORT=8000
3. 使用pycharm运行服务器
在pycharm中,我们可以使用内置的命令行串口执行命令来启动开发服务器,也可以使用pycharm内置的运行功能。
按如上进行配置即可。
4. 更多的启动选项
- 使服务器外部可见
flask run --host=0.0.0.0
添加–host选项,将主机地址设置为0.0.0.0使其对外可见。
- 改变默认端口
flask run --port=8000
flask提供的服务器默认监听5000端口,可通过传入port参数来改变监听端口。
可通过在环境配置文件中设置FLASK_RUN_HOST与FLASK_RUN_PORT来配置。
5. 设置运行环境
开发环境时指我们在本地编写和测试程序时的计算机环境,而生产环境是指网站部署上线供用户访问时的服务器环境。为了区分运行环境,Flask提供了一个FLASK_ENV的环境变量用来设置环境,默认为production(生产环境)。可以将其改为development(开发环境),这会开启所有支持开发的特性。同时可以通过FLASK_DEBUG来配置调试模式,1为开启,0为关闭。
在.flaskenv文件中写入:
FLASK_ENV=development
FLASK_DEBUG=1
在开发环境、调试模式下,这时执行flask run 启动程序会自动激活werkzeug内置的调试器以及重载器。
6. 调试器
调试器允许你在错误页面上执行Python代码。单击错误信息右侧的命令行图表,会弹出窗口要求输入PIN码,就是启动服务器时输出的PIN码,输入PIN码后,会有一个包含代码上下文信息的shell,我们可以利用他来调试。
7. 重载器
当我们对代码进行改动之后,期望的行为就是这些改动立刻作用到程序上。重载器的作用就是监测文件变动,然后重新启动服务器。
默认会使用werkzeug内置的stat重载器。他的缺点是耗电严重,准确率低。推荐使用Python库Watchdog,安装后会自动使用它来监测文件变动。
pipenv install watchdog --dev # --dev的作用是声明为开发依赖
如果有单独的css或js文件需要按下F5进行刷新才可。