《Flask Web Development》問題集
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 |