1、安裝:css
輸入如下命令能夠檢查系統是否安裝了virtualenv :html
$ virtualenv --versionpython
若是結果顯示錯誤,你就須要安裝這個工具。sql
一、Ubuntu 用戶可使用下述命令安裝它:數據庫
$ sudo apt-get install python-virtualenvflask
二、若是你的電腦是 Mac OS X 系統,就可使用 easy_install 安裝 virtualenv :
$ sudo easy_install virtualenv/api
三、 Windows 瀏覽器
1 pip install virtualenv//安裝虛擬環境 2 virtualenv flask//安裝flask 3 4 //安裝flask擴展 5 $ flask\Scripts\pip install flask 6 $ flask\Scripts\pip install flask-login 7 $ flask\Scripts\pip install flask-openid 8 $ flask\Scripts\pip install flask-mail 9 $ flask\Scripts\pip install flask-sqlalchemy 10 $ flask\Scripts\pip install sqlalchemy-migrate 11 $ flask\Scripts\pip install flask-whooshalchemy 12 $ flask\Scripts\pip install flask-wtf 13 $ flask\Scripts\pip install flask-babel 14 $ flask\Scripts\pip install guess_language 15 $ flask\Scripts\pip install flipflop 16 $ flask\Scripts\pip install coverage
2、環境bash
一、創建虛擬環境服務器
touch flasky
cd flasky
virtualenv venv
使用 virtualenv 命令在 flasky 文件夾中建立 Python 虛擬環境。建立虛擬環境後,當前文件夾中會出現一個子文件夾,名字就是上述命令中指定的參數,與虛擬環境相關的文件都保存在這個子文件夾中。按照慣例,通常虛擬環境會被命名爲 venv
你使用 bash 命令行(Linux 和 Mac OS X 用戶),能夠經過下面的命令激活這個虛擬環境:
$ source venv/bin/activate
若是使用微軟 Windows 系統,激活命令是:
$ venv\Scripts\activate
二、安裝flask
查看是否安裝成功,導入沒有報錯就成功
3、程序的基本結構
3.1初始化
建立一個flask實例
3.2路由和視圖函數
客戶端(例如 Web 瀏覽器)把請求發送給 Web 服務器,Web 服務器再把請求發送給 Flask程序實例。程序實例須要知道對每一個 URL 請求運行哪些代碼,因此保存了一個 URL 到
Python 函數的映射關係。處理 URL 和函數之間關係的程序稱爲路由。
像 index() 這樣的函數稱爲視圖函數(view function)。視圖函數返回的響應能夠是包含
HTML 的簡單字符串,也能夠是複雜的表單。
動態的URL:
視圖函數的做用是生成請求的響應
3.3 啓動服務器
一個完整的代碼程序
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return '<h1>Hello World!</h1>' if __name__ == '__main__': app.run(debug=True
3.4 請求響應循環
一、程序和請求上下文
MVC模型
MVC是模型(model)、視圖(view)、控制(controller)這三個單詞上的首字母組成。M是指業務模型,V是指用戶界面,C則是控制器。好比一批統計數據能夠分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。
它強制性的使應用程序的輸入、處理和輸出分開。
MVC的處理過程是這樣的:對於每個用戶輸入的請求,首先被控制器接收,控制器決定用哪一個模型來進行處理,而後模型經過業務邏輯層處理用戶的請求並返回數據,最後控制器肯定用哪一個視圖模型,用相應的視圖格式化模型返回數據,並經過顯示頁面呈現給用戶。
視圖是用戶看到並與之交互的界面。對老式的Web應用程序來講,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演着重要 的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services.
如何處理應用程序的界面變得愈來愈有挑戰性。MVC一個大的好處是它能爲你的應用程序處理不少不一樣的視圖。在視圖中其實沒有真正的處理髮生,無論這些 數據是聯機存儲的仍是一個僱員列表,做爲視圖來說,它只是做爲一種輸出數據並容許用戶操縱的方式。
如今咱們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪一個模型來進行處理,而後模型用業務邏輯來處理用戶的請求並返回數據, 最後控制器用相應的視圖格式化模型返回的數據,並經過表示層呈現給用戶。
4、模板
視圖函數的做用很明確,即生成請求的響應,但通常而言,請求會改變程序的狀態,而這種變化也會在視圖函數中產生。
例如,用戶在網站中註冊了一個新帳戶。用戶在表單中輸入電子郵件地址和密碼,而後點擊提交按鈕。服務器接收到包含用戶輸入數據的請求,而後 Flask 把請求分發處處理註冊請求的視圖函數。這個視圖函數須要訪問數據庫,添加新用戶,而後生成響應回送瀏覽器。這兩個過程分別稱爲業務邏輯和表現邏輯。
4.1 渲染模板
1 from flask import Flask,render_template 2 app = Flask(__name__) 3
4 @app.route('/') 5 def index(): 6 return render_template('index.html') 7
8 @app.route('/user/<name>') 9 def user(name): 10 return render_template('user.html',name=name) 11 if __name__=='__main__': 12 app.run()
Flask 提供的 render_template 函數把 Jinja2 模板引擎集成到了程序中。 render_template 函數的第一個參數是模板的文件名。隨後的參數都是鍵值對,表示模板中變量對應的真實
值。在這段代碼中,第二個模板收到一個名爲 name 的變量。
左邊的「name」表示參數名,就是模板中使用的佔位符;右邊的「name」是當前做用域中的變量,表示同名參數的值。
<h1>hello world!!</h1> <h1>hello,{{name}}!!</h1>
4.2 變量
Jinja2 能識別全部類型的變量,甚至是一些複雜的類型,例如列表、字典和對象。在模板中使用變量的一些示例以下:
<p>A value from a dictionary: {{ mydict['key'] }}.</p>
<p>A value from a list: {{ mylist[3] }}.</p>
<p>A value from a list, with a variable index: {{ mylist[myintvar] }}.</p>
<p>A value from an object's method: {{ myobj.somemethod() }}.</p>
可使用過濾器修改變量,過濾器名添加在變量名以後,中間使用豎線分隔。例如,
模板以首字母大寫形式顯示變量 name 的值:
Hello, {{ name|capitalize }}
4.3 靜態文件
靜態文件的引用被當成一個特殊的路由,即 /static/<filename>。例如,調用url_for('static', filename='css/styles.css', _external=True) 得 到 的 結 果 是 http://localhost:5000/static/css/styles.css。
1 {% block head %} 2 {{ super() }} 3 <link rel="shortcut icon" href="{{ url_for('static', filename = 'favicon.ico') }}" 4 type="image/x-icon"> 5 <link rel="icon" href="{{ url_for('static', filename = 'favicon.ico') }}" 6 type="image/x-icon"> 7 {% endblock %}
訪問地址:http://localhost:5000/static/favicon.ico