通过 Python 自带的库创建虚拟环境并启动
在 Terminal 中 cd 到想要创建虚拟环境的目录下, 输入
python -m venv flask_study_env
flask_study_env 可替换为你想要的任何名字. 若显示错误, 可尝试将 python 换成 python3.
稍等片刻, 虚拟环境即可创建完毕, 输入
ls flask_study_env
即可查看自动创建的文件夹内的文件.
输入
source flask_study_env/Scripts/activate
启动虚拟环境.
此时你会发现命令行的起始位置始终带有
(flask_study_env)
表明虚拟环江已成功启动.
使用 flask 框架编写网站的 py 文件
from flask import Flask
'''
初始化: Flask必须创建程序实例
一般用 __name__ 作为参数, 该变量是系统变量, 指的是该 py 文件的文件名
'''
app = Flask(__name__)
'''
路由和视图函数
客户端发送 url 给 web 服务器, web 服务器将 url 转发给 flask 程序实例
需要知道对于每一个 url 请求启动那一部分代码,所以保存了一个 url 和 python 函数的映射关系。
处理 url 和函数之间关系的程序,称为路由
在 flask 中,定义路由最简便的方式,是使用程序实例的 app.route 装饰器,把装饰的函数注册为路由
'''
@app.route('/')
def index():
return '<h1>欢迎来到我的主页~</h1>'
保存文件, 命名为 web_server.py
那么到现在, 最简单的框架搭起来的最简单的网站就可以运行啦~
如果想直接见到效果的话, 可以直接看下面一部分.
接下来, 再为我们的网站添加一份声明:
@app.route('/about')
def about():
return '<h1>这是我在局域网上的第一个网站!'
添加一个简单的效果:
@app.route('/echo/<msg>')
def echo(msg):
return '<h1>我可以重复你说的话哦~</h1><h2>你刚才说了: {}</h2>'.format(msg)
这个函数可以让用户输入的语句显示在屏幕上.
完整代码如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>欢迎来到我的主页~</h1>'
@app.route('/about')
def about():
return '<h1>这是我在局域网上的第一个网站!'
@app.route('/echo/<msg>')
def echo(msg):
return '<h1>我可以重复你说的话哦~</h1><h2>你刚才说了: {}</h2>'.format(msg)
'''
用run方法启动flask集成的开发web服务器
服务器启动后,会启动轮询,等待并处理请求。轮询会一直请求,直到程序停止。
'''
if __name__ == '__main__':
app.run(host='0.0.0.0', post=5000, debug=True)
启动服务器!
在命令行中输入
export FLASK_APP = web_server.py
flask run
按下回车后, 会给出提示
flask run
* Serving Flask app “web_server.py”
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
现在就可以通过浏览器正常访问啦~
打开浏览器, 在顶端的网址栏输入
127.0.0.1:5000
或者
localhost:5000
回车后就可以看到
我们再看看另外两个函数的效果:
但此时如果你对 web_server.py 文件做修改并保存, 再刷新页面你会发现怎么没有变化呐?
此时必须 Ctrl + C 停止运行后再次运行我们的主页才会跟现在的 py 文件相同, 这显然对开发时的调试很不友好.
如果在运行前输入:
export FLASK_DEBUG = 1
即可启动调试.
这样修改完 py 文件并保存后刷新页面, 就是即时的效果了.
将网站放到局域网上
只要家里有路由器都可以试一试~
只要在运行时在添加一句配置;
flask run --host 0.0.0.0
表示整个网络, 即网络中的所有主机
这样, 在手机上也可以访问我们刚刚创建的网站啦~