这是第二次用Flask了,感觉非常好用,因为简便,可以很快看到demo。
Flask是使用python语言,基于Werkzeug,Jinja2的web开发微框架。作者Armin Ronacher 是出生于1989年的奥地利程序员,2010年时发布了第一版的Flask。目前0.12.2版本的flask也就3k多行代码,但是功能还是相对完善的,主要得益于flask的插件机制。
最简单的Flask程序
1 | from flask import Flask |
URL路由
通过@app.route('/')
这个装饰器,就可以指定url对应的业务处理函数。在相应函数里面可以完成各种CRUD的功能,并返回一个页面或者json对象。
可以在route
里面增加变量,比如@app.route('/post/<int:post_id>')
HTTP Methods
url对应的同一个函数,可以针对不同的method进行不同的业务逻辑处理。默认只处理GET,如果要处理其他方法,需要在装饰器中添加参数,例子如下:
1 | from flask import request |
静态文件
在应用目录下,建一个static
的文件夹,这是flask就可以处理这个目录的静态文件,比如css, js, jpg这类的文件。
模板渲染
flask通过render_template
函数,对模板进行相关变量替换,底层是依赖jinja2,貌似jinja的作者也是Armin Ronacher。所有的模板文件需要放在templates
目录下。同时在模板中还可以使用request, session, g等全局对象。
获取Request数据
web应用主要是处理用户提交的各种数据。flask通过request这个全局对象来获取各种数据。
1,Post的form数据通过request.form['xxx']
这种方式得到;
2,就是URL上的参数通过request.args.get('key', '')
来访问。
3,上传的文件。request.files['the_file']
获得一个文件,然后通过save函数保存到磁盘。
4,Cookie。request.cookies.get('xxx')
这个函数可以得到cookie中的数值,如果要写入cookie,需要用response对象的set_cookie
函数。
重定向
在某些情况下,页面需要重定向到其他页面,比如登陆后的页面,这是需要redirect和url_for 配合就可以了。
关于Response
Flask会把view函数返回数据自动转化为response对象,如果直接返回response对象,那就不进行转化。这里主要涉及的操作是render_template
和make_response
。需要需要修改cookie和header都在这里进行处理
Sessions
Flask的标准session是放在cookie中的一个加密串,里面会保存一些特定的,不想让用户修改和看到的信息。需要设置app.secret_key
才会生效。
日志
1 | app.logger.debug('A value for debugging') |
Flask有内置的WebServer可以处理HTTP请求。再加上页面的Routing,请求Request对象, 应答Response对象,加上业务逻辑view function,就可以很快实现一个web 应用。普通页面的网站通过templates目录下的模板,用jinja2来生成页面即可。