前沿
注意注意注意,這是跟着學習欄目,就是跟着大牛們一起學習的一篇記錄
原鏈接:http://www.pythondoc.com/flask-mega-tutorial/index.html
這次學習的是flask框架,上面鏈接也有相對應模塊的代碼下載,十分方便學習
不過上述鏈接裏的教程內容跟下載內容有不小的區別
而且本人嘗試跟着教程裏的學習會出不少錯誤,所以之後的【跟着學習】都是按照下載內容裏的代碼結合上述鏈接裏的邏輯混搭着複述出來,也算是某種程度上的學習吧
要求
基本掌握python的語法,模塊和包的內容
運行環境:python3.x,windows系統
應用程序簡介
作爲本教程的一部分–我要開發的應用程序是一個極具特色的微博服務器,我稱之爲 microblog 。
- 用戶管理,包括管理登錄,會話,用戶角色,權限以及用戶頭像。
- 數據庫管理,包括遷移處理。
- Web 表單支持,包括對各個字段的驗證。
- 分頁處理。
- 全文搜索。
- 用戶郵件提醒。
- HTML 模板。
- 支持多國語言。
- 緩存以及其它性能優化技術。
- 開發以及生產服務器的調試技巧。
- 在生產服務器上安裝。
安裝flask
現在我們必須開始安裝 Flask 以及一些我們會用到的擴展。我首選的方式就是創建一個 虛擬環境 ,這個環境能夠安裝所有的東西,而你的主 Python 不會受到影響。另外一個好處就是這種方式不需要你擁有 root 權限。
先爲python安裝好pip(網上很多教程,略過),一旦安裝好了 pip 的話,用下面的命令安裝 virtualenv:
pip install virtualenv
選好一個自己喜歡的位置新建一個microblog的文件夾,在microblog目錄中使用如下的命令創建一個虛擬環境:
python -m venv flask
這時會在microblog文件夾內新建一個flask的文件夾,爲了創建一個虛擬環境,請輸入如下的命令行,在 flask 文件夾中創建一個完整的 Python 環境
virtualenv flask
接下來通過一系列的命令安裝flask擴展
pip install flask
pip install flask-login
pip install flask-openid
pip install flask-mail
pip install flask-sqlalchemy
pip install sqlalchemy-migrate
pip install flask-whooshalchemy
pip install flask-wtf
pip install flask-babel
pip install guess_language
pip install flipflop
pip install coverage
在 Flask 中的 “Hello, World”
爲應用程序創建基本的文件結構,沒有flask文件夾是因爲我並沒有把虛擬環境安裝到microblog裏面,實際上虛擬環境安裝到哪裏都沒有問題,因爲我用的是pycharm,所以只需要調用需要用到的虛擬環境即可,接下來的操作若沒有對應的文件請自行創建
我們的應用程序包是放置於 app 文件夾中
子文件夾 static 是我們存放靜態文件像圖片,JS文件以及樣式文件
子文件夾 templates 顯然是存放模板文件
讓我們開始爲我們的 app 包創建一個簡單的初始化腳本
傳給flask一ing用構造函數的__name__參數用來確定應用的位置,進而找到應用中其他文件的位置,比如圖像和模板
app/__init.py(其實是上面的init文件,兩邊都有下劃線的,這裏顯示不出兩邊下劃線)
from flask import Flask
app = Flask(__name__)
from app import routes
讓我們編寫第一個視圖函數:
其實這個視圖是非常簡單,它只是返回一個字符串,在客戶端的網頁瀏覽器上顯示。兩個 route 裝飾器創建了從網址 / 以及 /index 到這個函數的映射。
app/routes.py
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
能夠完整工作的 Web 應用程序的最後一步是創建一個腳本,啓動我們的應用程序的開發 Web 服務器。讓我們稱這個腳本爲 microblog.py,並把它置於根目錄
debug=True是啓用調試模式
!!!千萬別在生產服務器中啓用調試模式!!!
根目錄
from app import app
app.run(debug = True)
運行,啓動!
成功!
碎碎念
1.路由和視圖函數:
客戶端(web瀏覽器)把請求發送給web服務器,web服務器再把請求發送給flask應用實例。應用實例需要知道對每個URL的請求要運行哪些代碼,所以保存了一個URL到python函數的映射關係,處理URL和函數之間關係的程序稱爲路由
2.調試模式:
flask應用可以在調試模式中運行,在這個模式下,開發服務器默認會加載兩個便利的工具:重載器和調試器
啓動重載器後,flask會監視項目中的所有源碼文件,發現變動時自動重啓服務器,開發過程中運行啓動重載器的服務器特別方便,因爲每次修改並保存源碼文件後,服務器都會自動重啓,讓改動生效
調試器是一個基於web的工具,當應用拋出未處理的異常時,它會出現在瀏覽器中。