Flask基本框架
1.Why Flask
Flask是python的web框架,最大的特徵是輕便,讓開發者自由靈活的相容要開發的feature。
為什麼要從Flask開始學習web框架?
1.python語言的靈活性給予了Flask同樣的特徵;
2.無論是使用者畫像還是產品推薦,python相比其他語言都有極大的優勢;
3.Flask輕便,容易上手,試錯成本低
所以,從搭建一個輕便的部落格出發,既要容易上手實現,又要能夠在後期擴充套件使用者畫像和產品推薦,我選擇Flask作為web框架。
2.Flask Prerequisite
Flask上手前提少,能夠極大幫助初學者快速理解web開發,這也是我喜歡Flask的原因。
(1)物件導向程式設計(Object-Oriented Programming, OOP)
相信絕大多數人都接觸過OOP,比如使用Java, Python, Go等。在Flask中,涉及基礎OOP的概念,包括物件、類、繼承、封裝等。
(2)python基礎
Flask中涉及簡單python概念,包括模組、包、裝飾器、模組等。
(3)命令列基礎
大部分的開發都繞不開命令列,Flask同樣要求基礎命令列操作,例如上傳伺服器、查詢檔案、修改配置檔案等。
(4)資料庫基礎
web開發會產生資料管理的問題,雖然可以使用非資料庫的方式搭建靜態網頁,但從長遠來看將,掌握一門基礎的資料庫工具是很有必要的。比如結構化資料庫Mysql, Postgresql,非結構化的MongoDB, Redis等。
(5)前端基礎
雖然搭建網站主要是後臺邏輯編寫,但今天越來越多的人在意前臺展現,因此Flask除了後臺python語言的要求外,還要求掌握基礎的html, JavaScript, CSS。
(6)版本控制(增強)
版本控制是所有程式開發的基礎,瞭解基礎的版本控制可以大大提高開發的效率。掌握基礎的git技能會提高Flask網站開發速度。
3.Installation
使用virtualenv或者python3.3以上的pyvenv建立虛擬環境來配置開發環境。
可以通過pip方便的配置flask:
$ pip install flask
4.初始化(Initialization)
(1)建立flask例項物件
flask程式必須建立一個程式例項,常用方法:
from flask import Flask
app = Flask(__name__)
這裡的app就是一個程式例項,客戶端(一般是瀏覽器)將請求傳送給服務端Web伺服器,Web伺服器再把請求發給Flask例項。
(2)構建例項物件從URL到python函式的對映關係
程式例項需要知道所有URL對應的執行程式碼,所以要有從URL到python函式的對映關係。處理URL到python函式對映關係的程式一般叫做路由(Router)。
Flask實現中一般通過python裝飾器來實現,例如:
@app.route('/')
def index():
return '<h1>test</h1>'
上面的程式從程式化例項app開始,構建了根目錄'/'的路由,具體實現的程式是index()函式,返回了一段html程式碼'test'字串。
路由所對應的程式稱為檢視函式(view function),即上面的index()函式。
(3)啟動伺服器
程式例項用run方法來啟動伺服器,例如:
if __name__ == '__main__':
app.run(debug=True, port=8777)
上面的程式是常見套路,當前python檔案被執行的時候,執行flask例項化物件的run方法,啟動伺服器,同時上面程式設定了兩個常用引數:debug為True,埠是8777,避免和其他應用的埠衝突。
(4)請求上下文
Flask使用上下文把一些檢視函式的物件變成全域性可訪問,共有4中模式:
變數名 | 上下文 | 說明 |
---|---|---|
current_app | 程式上下文 | 當前啟用程式的程式例項 |
g | 程式上下文 | 處理請求時用作臨時儲存的物件。每次請求都會重設這個變數 |
request | 請求上下文 | 請求物件,封裝了客戶端發出的 HTTP 請求中的內容 |
session | 請求上下文 | 使用者會話,用於儲存請求之間需要“記住”的值的詞典 |
5.模板
業務邏輯和表現邏輯分開,才能開發出易維護的網站,表現邏輯往往放在模板中。
Flask的模板預設在根目錄的templates中,例如:
from flask import Flask, render_template
from datetime import datetime
app = Flask(__name__)
@app.route('/<name>')
def index(name):
return render_template('index.html', name=name)
if __name__ == '__main__':
app.run(debug=True, port=8777)
index.html頁面可以獨立出來專門處理網站的表現邏輯,例如:
{% block title %}Main{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Hello World!</h1>
<h2>Hello,
{% if name %}{{ name }}
{% else %}Stranger{% endif %}!
</h2>
</div>
{% endblock %}
Flask預設使用Jinjia2進行模板渲染,可以用一些控制語句,例如上面的if else判斷。
6.基本頁面實現
上面的程式碼就實現了一個最簡單的前後端互動的Flask頁面,訪問localhost:8777/Warrior的頁面如下:
[圖片上傳失敗...(image-218bbe-1528873966688)]
相關文章
- 【flask框架】——flask-restful風格Flask框架REST
- Flask框架入門Flask框架
- Flask 框架簡介Flask框架
- flask 框架日誌Flask框架
- flask框架安裝使用Flask框架
- python的flask框架PythonFlask框架
- Flask(9)- 藍圖的基本使用Flask
- Python之Flask框架一PythonFlask框架
- flask框架可以做什麼Flask框架
- Flask框架之八SQLAlchemy -ormFlask框架SQLORM
- 基本框架框架
- Flask框架和Django框架有什麼區別?Flask框架Django
- Flask框架(二):路由與藍圖Flask框架路由
- 深入理解flask框架(4):sessionFlask框架Session
- flask框架中的cookie和sessionFlask框架CookieSession
- Flask框架:藍圖(Blueprint)測試Flask框架
- flask框架資料庫部分(四)Flask框架資料庫
- 輕量級Web框架Flask(二)Web框架Flask
- 學Flask框架有什麼用?為什麼學習Flask?Flask框架
- 00 基本框架框架
- Django框架,Flask框架和Tornado框架各有什麼優缺點Django框架Flask
- Python flask-restful框架講解PythonFlaskREST框架
- Flask框架搭建REST-API服務Flask框架RESTAPI
- Flask 框架作者希望看到的 PythonFlask框架Python
- Python超級明星WEB框架FlaskPythonWeb框架Flask
- 產品基本框架框架
- Flask框架和Django框架有什麼區別?詳細分析!Flask框架Django
- flask專案1實戰:2.2 flask框架下使用圖片驗證碼Flask框架
- Flask框架(一):介紹與環境搭建Flask框架
- 從原始碼看Flask框架配置管理原始碼Flask框架
- Flask VS Django,選擇哪個框架好?FlaskDjango框架
- Flask框架(之六)藍圖和子域名Flask框架
- python Flask框架學習——Response響應PythonFlask框架
- Flask 框架啟動無法改變埠Flask框架
- django框架使用基本流程Django框架
- 教程:基本應用框架框架
- UI框架基本邏輯UI框架
- [譯] 使用 Python Flask 框架釋出機器學習 APIPythonFlask框架機器學習API