1. 程式人生 > >python中flask--1

python中flask--1

Python Web 框架
Flask 輕量級WEB框架
AJAX 在WEB中完成非同步請求和響應
Django 重量級WEB框架

1.靜態網頁 和 動態網頁
靜態網頁:無法與伺服器做動態互動的網頁
動態網頁:允許與伺服器做動態互動的網頁
2.WEB 與 伺服器
1.WEB : 網頁(HTML,CSS,JS)
2.伺服器
能夠給使用者提供服務的機器就稱為 "伺服器"
1.硬體 與 軟體
硬體:一臺計算機
軟體:一個能夠接受使用者請求並給出響應的程式
1.APACHE
2.TOMCAT
3.IIS(Internet Information Service)

4.Nginx
2.作用
1.儲存WEB上的資訊
2.能夠處理使用者的請求(request)並給出響應(response)
3.執行伺服器端的程式
4.具備一定的安全功能
3.框架
1.什麼是框架
框架是一個為了解決開放性問題而存在的一種結構
框架本身會提供一些基礎的功能
我們只需要在基礎功能之上搭建自己的操作即可
2.Python Web 框架
1.Flask - 輕量級
2.WEBPY - 輕量級
3.Tornado - 非同步框架

4.Django - 重量級框架
3.框架模式
1.MTV
M : Models , 模型層 , 主要負責根據資料庫建模
T : Templates , 模板層 ,處理使用者的顯示的內容的,如:html
V : Views ,檢視 , 處理與使用者互動的內容(請求和響應)
2.MVC
M : Models , 模型層 , 主要負責根據資料庫建模
V : Views , 檢視層 , 處理使用者的顯示的內容的,如:html
C : Controller , 控制器 ,處理與使用者互動的內容(請求和響應)


M --- M
T --- V
V --- C
4.Flask 框架
1.什麼是Flask
Flask是一個基於Python並且依賴於Jinja2模板引擎和Werkzeug WSGI服務的一個微型框架
Flask中包含一個輕量級的web 伺服器主要用於在開發階段測試使用

WSGI : Web Server Gateway Interface (WEB服務閘道器介面)

2.安裝Flask
1.檢視已安裝的Flask 及其 版本
在 python 的互動模式中
1.import flask
沒報錯:已經安裝了Flask,可以繼續檢視版本
報錯:沒安裝
2.flask.__version__
已安裝Flask的情況下,檢視其版本
2.安裝Flask
sudo pip3 install flask
pip3 download flask
3.Flask 的初始化
見程式碼... ...

練習:
訪問路徑:http://localhost:5000/login
在網頁中顯示:歡迎訪問登入頁面
訪問路徑:http://localhost:5000/register
在網頁中顯示:歡迎訪問註冊頁面

5.Flask - 路由
1.什麼是路由
客戶端傳送請求給伺服器,伺服器需要將請求傳送給Flask程式例項
程式例項需要知道每個url請求對應的處理程式碼是誰.所以程式中必須要有一個 url請求地址到python執行函式的一個對映.處理url和函式之間的關係的程式就是"路由"
2.路由的體現
在Flask中,路由是通過 @app.route() 裝飾器來表示的
1.路由的基本表示
#http://127.0.0.1:5000/
@app.route('/')
def index():
return "xxx"
#http://127.0.0.1:5000/manager/admin/login
@app.route('/manager/admin/login')
def login():
return "xxx"
2.帶引數的路由
路由中可以攜帶引數來表示要傳遞到檢視中的資料
http://localhost:5000/show/laowang
http://localhost:5000/show/wangwc

1.基本帶參路由
@app.route('/show/<name>')
def show1(name):
name:表示的就是位址列上傳遞的資料
pass
2.指定引數型別的路由
允許在宣告路由時指定引數型別
避免了在程式中再轉換
@app.route('/show/<name>/<int:age>')
def show(name,age):
name : 字串
age : 整數
int:型別轉換器
Flask中所支援的型別轉換器:
型別轉換器 作用
預設 字串,不能有斜槓(/)
int: 整型
float: 浮點型
path: 字串,可以有斜槓(/)
3.多 URL 的路由匹配
為多個url訪問地址匹配同一個檢視函式
@app.route('/地址1')
@app.route('/地址2')
....
def index():
pass
練習:
當訪問路徑時以下任何一個的時候
localhost:5000
localhost:5000/index
localhost:5000/數字
localhost:5000/index/數字
將程式交給index()檢視處理函式
判斷路由中到低有沒有數字傳遞進來
如果有:
響應:您當前看的頁數為:xxx
如果沒有
響應:您當前看的頁數為:1
3.路由中設定HTTP請求方法
在Flask中預設只能接收get請求,無法接收post請求
在Flask中允許設定可以接收的請求方式,
如果請求方式不匹配的話,會響應回405(Method Not Allowed)

@app.route('/xxx',methods=['POST','GET'])
def xxx():
該函式既能接收post請求也能接收get請求
4.URL的反向解析
正向解析:程式自動解析,根據@app.route()中的訪問路徑,來匹配處理函式
反向解析:通過檢視處理函式的名稱自動生成對應的訪問路徑

在Flask中要實現反向解析:
url_for(funName,args)
funName:要生成地址的函式名
args:該地址中需要的引數

6.模板 - Templates
1.什麼是模板
模板,在Flask中就是允許響應給使用者看的網頁
在模板中,允許嵌入動態的內容
模板最終也會被解析成字串再響應給客戶端,這一過程稱為"渲染"

Flask中,模板是依賴於Jinja2的模板系統
http://jinja.pocoo.org/
2.模板的設定
預設情況下,Flask會在程式目錄中搜索一個 templates 的目錄
作為模板的存放目錄
3.模板的渲染
作用:在檢視中,將模板檔案(xx.html)渲染成字串之後,再響應給瀏覽器
語法:
from flask import render_template
render_template('xxx.html')
引數:要渲染的模板
返回值:該模板中的字串內容

傳遞變數到模板中
render_template('xxx.html',變數=值,變數=值,...)
在模板中獲取變數的值
{{變數名}}