標籤:

《Flask Web Development》問題集

公司用的數據可視化平台是redash,這貨用的web framework是flask,因為有的時候會出一些奇奇怪怪的問題,所以簡單學習一下flask,不求會寫,只求能看,以便日後debug。

1.flask官網稱自己為microframework,它的代碼量有多少?

核心代碼只有6000+ lines,真的是很小啊。

2.django/tornado/flask誰的人氣高?

github上django和flask差不多,star數都是25000+,而tornado只有它們的一半。

3.hello world?

from flask import Flasknnapp = Flask(__name__)nn@app.route(/)ndef index():n return hello worldnnif __name__ == __main__:n app.run(host=0.0.0.0, debug=True) n

然後直接python hello.py就啟動了,真是比django和tornado輕量好多。

4.flask如何拿request中的參數,和其它框架有什麼不同?為什麼?

flask不把request parameter作為參數放到view function中,原因是覺得這樣寫比較亂,比如

在django中,parameter形式:

def get_course_enrollment_date(user_id, course_id):n

在tornado中,context形式:

class XHandler(RequestHandler):n user_id = self.get_argument(user_id, None)n course_id = self.get_argument(course_id, None)n

在flask中,context形式:

def get_course_enrollment_date():n user_id = request.headers.get(user_id)n course_id = request.headers.get(course_id)n

其實我覺得django的寫法挺好的。

5.舉例使用一個extension?

flask把非核心的功能都作為extension,類似於操作系統中的microkernel。

比如對於啟動程序這種事情,就放到了一個extension里,用來解析啟動參數。

from flask import Flasknfrom flask.ext.script import Managernnapp = Flask(__name__)nmanager = Manager(app)nn@app.route(/)ndef index():n return hello worldn nif __name__ == __main__:n manager.run() n

啟動:python hello.py runserver --host 0.0.0.0n

其它包括form,orm,等都是extension。

6.為什麼需要template?

因為view function實際上承擔了兩部分工作:

a.bussiness logic,比如往db里加一條用戶記錄

b.presentation logic, 比如返回給用戶告訴他註冊成功

為了將這兩部分邏輯分離,就出現了template。也就出現了MTV。

7.Jinjia2是什麼?

Jinjia2是一個Template Engine。


推薦閱讀:

上雲連載5:使用 Nginx + uWSGI 部署 Flask 應用
Flask文件上傳(四):文件管理與多文件上傳
Flask文件上傳系列目錄索引
你所不知道的 Flask Part1:Route 初探
為什麼 Flask 有那麼多的好評?

TAG:Flask |