别再和我说你不会用flask编写简单应用了!

528 阅读4分钟

有理想、有抱负、懂得坚持与自律,相信在不久的将来,你也会成功的!

打开微信搜索【孩子上学后】关注这个不一样的程序员

本次将带领你了解flask应用各部分的作用,编写并运行第一个flask web 应用

1.1 初始化

所有flask应用都必须创建一个应用实例。Web服务器使用一种名为web服务器网关接口(WSGI, Web server gateway interface)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是flask类的对象,通常由下面的代码所创建:

from flask import Flask
app = Flask(__name__)

Flask类的构造函数只有一个必须指定的参数,即应用主模块或包的名称。

from flask import Flask

print(__name__)                       

运行结果

__main__

在每一个程序里面一般都有一个程序的主入口

if __name__ == "__main__"

所以你应该明白为什么打印出来的结果是

__main__

其实就是主模块或者是包的名称

1.2 路由和视图函数

客户端(例如web浏览器)把请求发送给web浏览器,web浏览器再将请求发送给flask应用实例。应用实例需要知道对每个url的请求需要运行哪些代码到Python函数的映射关系。处理url和函数之间的关系的程序称为路由

在flask应用中定义路由的最简便的方式是使用应用实例提供的app.route装饰器,下面的代码就说明了如何使用装饰器声明路由:

@app.route('/')
def index():
    return '<h1>Hello world</h1>'

上面的程序将index()函数注册成为应用根地址的处理程序。

index()这样处理入站请求的函数称为视图函数,如果应用部署在域名为www.example.com的服务器上,在浏览器中访问该网站,会触发服务器执行index()函数,这个函数的返回值,就是响应值

在每一次访问网站的时候,你会发现网站的地址是会改变的,Flask支持这种形式的URL,只要在app.route装饰器中使用特殊的语法之后就可以实现。

@app.route('/user/<name>')
def index(name):
    return '<h1>Hello, {}</h1>'.format(name)

路由URL中放在尖括号里面的内容就是动态部分。调用该函数时flask会奖动态部分作为参数,传入index()函数。

路由的动态部分默认是字符串,当然也可以是其他类型,例如:/user/<int:id>,只会匹配动态片段id为整数的URL,例如:/user/123

1.3 一个完整的应用

确保在flasky文件夹内,创建一个hello.py脚本,定义一个应用实例、一个路由和一个视图函数。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello world</h1>'

1.4 Web开发服务器

flask应用自带的web服务器,通过flask run命令启动。这个命令在FLASK_APP环境变量指定的Python脚本中寻找应用实例。

若想要启动手把手教你从0到1学会flask写的hello.py应用,首先确保创建的虚拟环境已经激活,而且里面安装了flask。Linux和macOS启动下述命令启动web服务器

(venv) $ export FLASK_APP=hello.py
(venv) $ flask run 

服务器启动之后便开始轮询、处理请求。按Ctrl+C键停止服务器,轮询才开始停止。

服务器运行时,在web浏览器的地址栏中输入http://127.0.0.1:5000

如果在URL后面再输入任何内容,应该不知道如何处理,会向浏览器返回错误代码404,这个错误,就是当你访问不存在的网页时就会见到

1.5 动态路由

在浏览器中访问这个动态路由,你会看到一条个性化信息,包含你在url提供的名字

from flask import Flask


app = Flask(__name__)
@app.route('/')
def index():
    return '<h1>Hello world</h1>'


@app.route('/user/<name>')
def user(name):
    return '<h1>hello, {} !</h1>'.format(name)

在浏览器输入http://127.0.0.1:5000/user/jack

1.6 调试模式

flask应用可以在调试模式中运行,开发服务器默认会加载两个便利的工具,重载器调试器

启动重载器之后,flask会监视项目中的所有源码文件,发现变动时会重启服务器。在开发过程中运行启动重载器和服务器特别方便,因为每次修改源码文件之后,服务器会重启,让改动生效。

调试器是一个基于web的工具,当应用抛出来处理异常时,它会浏览器中。此时,web浏览器变成一个交互式栈跟踪,你可以在里面审查代码。

调试模式默认禁用。若想启用,在执行flask run命令之前设定FLASK_DEBUG=1环境变量

(venv) $ export FLASK_APP=hello.py
(venv) $ export FLASK_DEBUG=1
(venv) $ flask run

==千万不要在生产服务器中启动调试模式。客户端可以通过调试器请求执行远程代码,因此可能导致生产服务器遭到攻击!!==

精彩链接

手把手教你从0到1学会flask