Flask并不是小白就能随意入门的,需要基础知识。例如:
所以,小白请谦虚,请Google不会的专业名称!我就是这样过来的……
摘要:Flask是一个微型框架,核心很小。但是,借助于Python的扩展性,Flask的功能很强大。
Flask有两个重要的依赖,搞不懂这些,后面的学习会相当吃力【大概率学不会】,戳链接去学吧。如下:
(1)路由、调试和Web服务器网关接口(WSGI,Web Server Gateway Interface )子系统,由Werkzeug提供。About Werkzeug:
In this tutorial, we will together create a simple URL shortener service with Werkzeug. Please keep in mind that Werkzeug is not a framework, it’s a library with utilities to create your own framework or application and as such is very flexible. The approach we use here is just one of many you can use.
Werkzeug is a utility library for WSGI. WSGI itself is a protocol or convention that ensures that your web application can speak with the webserver and more importantly that web applications work nicely together.
(2)模板系统,用Jinja2提供。About Jianja2:
Jinja2 is a modern and designer-friendly templating language for Python, modelled after Django’s templates. It is fast, widely used and secure with the optional sandboxed template execution environment:
<title>{% block title %}{% endblock %}title>
<ul>
{% for user in users %}
<li><a href="{{ user.url }}">{{ user.username }}a>li>
{% endfor %}
ul>
基础资料就罗列到这,动手做点Demo吧。
执行下面的脚本,让Flask飞起来:
from flask import Flask
myApplication = Flask(__name__)
@myApplication.route(“/”) # 静态路由
def index():
return “Hello World!”
@myApplication.route(“/username/”) # 动态路由
def user(name):
return “Hello , %s ! ”%name
if __name__ = “__main__”:
myApplication.run(debug = True)
所有的Flask程序都必须创建一个程序实例,也就是Flask类的对象(小白,请戳传送门。)。Flask使用WSGI的协议,将客户端的所用请求都转交给程序实例处理。
简单的创建过程:
import flask import Flask
myApplication = Flask(__name__)
name是构造函数的参数,这是程序主模块或包的名字。Flask用这个参数决定程序的根目录,方便找到程序运行所需的其他资源文件。
还有复杂的初始化过程,没有写到。
Web浏览器(也就是客户端)将请求发送给Web服务器,Web服务器将请求发送给Flask的对象。众多的对象,需要知道每个URL请求所需运行哪些代码,此时,就需要:保持一个URL—>Flask对象的映射关系。这里URL与函数之间关系的程序就叫路由。用myApplication.route修饰器来定义。比如:
@myApplication.route("/") # 静态路由
def index():
return “Hello World!”
index(),学名就叫视图函数,当访问“/”目录时,就会返回“hello world!”。
说说动态路由:比如URL的内容有些是固定不变的,有些是可变的。例如:http://127.0.0.1/username/LiHua , http://127.0.0.1/username/XiaoMing等。只需要在route修饰器中使用特殊语法即可。例如:
@myApplication.route(“/username/”) # 动态路由
def user(name):
return “Hello , %s ! ”%name
URL会想匹配静态部分,在吧动态的部分作为视图函数的参数传入。这里的默认是字符串格式,也可以是int、float、path类型。例如想动态传入ID的时候可以是:@myApplication.route(“/userid/”)
其中,path类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。也就是对“/”进行转义的意思。
程序实例用run()方法来启动Flask集成的开发Web服务器
例如:
if __name__ = “__main__”:
myApplication.run(debug = True)
执行这个脚本时,才启动开发Web服务器。不容许其他脚本对其引用,如果你非要引用,myApplication.run()将不会运行。
Ctrl + C 键终止程序。
debug = True ,开启调试模式。
PS:Flask提供的Web服务器不适合在生成环境中使用,可以尝试Heroku
Flask默认端口是5000,浏览器输入:http://127.0.0.1:5000/
也可以输入:http://127.0.0.1:5000/username/谷震平
班门弄斧,我也不好意思,欢迎交流指正!
另外,也欢迎关注我的微信公众号“谷震平的专栏”,将推送原创文章。
Flask官方文档:http://dormousehole.readthedocs.org/en/latest/