Python全棧 Web(Flask框架、安裝、應用)

Flask 輕量級WEB框架

靜態網頁:

不能與服務器交互的網頁都是靜態網頁

動態網頁:

能夠與服務器進行交互的網頁

WEB:瀏覽器 網頁(前端三劍客)

服務器:

能夠給用戶提供服務的機器就是服務器

硬件來說就是一臺主機

還要配備一個能夠接受用戶請求並給出響應用程序

APACHE

TOMCAT

IIS(Internet Information Service)

Nginx(Python用的較多)

作用:

存儲WEB所需要的信息

所有的服務器都能夠處理用戶請求(request)並作出回應(response

能夠執行服務器端的程序

具備一定的安全性功能

框架:

是一種為了解決開放性問題而存在的一種結構

框架本身也提供了一些基本功能,

我們只需要在自己的基礎功能上搭建屬於自己的操作即可

Python的WEB框架:

Flask

Django

Tornado

Webpy

Flask框架:

什麼是Flask?

Flask是一個基於Python並且依賴於jinja2模板引擎和

werkzeug WSGI(Web server Gateway Interface)

外部服務網關接口 服務的一個微型框架

Flask的框架模式:

Python的框架基本都是MTV的

M:Models 模型層

負責數據庫建模 與數據庫打交道

T:Templates 模板層

用於處理用戶顯示的網頁內容

V:Views:視圖層

用於處理與用戶交互的部分 處理用戶的請求並給出

響應內容的一段邏輯程序

而其他語言框架基本都是MVC:

M:Models 模型層

同上

V:Wiews 視圖層

視圖層 用處處理用戶顯示的內容的 等同於MTV的 T

C:Controller:控制器

處理用戶的請求與響應等同於MTV的 V


Python全棧 Web(Flask框架、安裝、應用)


安裝:

在線安裝

sudo pip3 install flask

離線安裝:

9個依賴包 裝到吐血身亡~ 還是算了~~

Pycharm安裝:

Python全棧 Web(Flask框架、安裝、應用)

Python全棧 Web(Flask框架、安裝、應用)

Python全棧 Web(Flask框架、安裝、應用)

pip3可以下載安裝包:

pip3 download 包名

驗證安裝:

import flask

版本信息:flask.__version__

安裝好以後初始化項目:

打開終端

Python全棧 Web(Flask框架、安裝、應用)

Paris@Python:~$ mkdir Flask 

Paris@Python:~$ cd Flask/
Paris@Python:~/Flask$ mkdir FlaskProject
Paris@Python:~/Flask$ cd FlaskProject/
Paris@Python:~/Flask/FlaskProject$ touch run.py
Paris@Python:~/Flask/FlaskProject$ mkdir templates

創建好文件後用Pycharm打開

Python全棧 Web(Flask框架、安裝、應用)

Python全棧 Web(Flask框架、安裝、應用)

Python全棧 Web(Flask框架、安裝、應用)

運行應用

Python全棧 Web(Flask框架、安裝、應用)

from flask import Flask
app = Flask(__name__)
# 將主程序構建為 Flask應用命名為app 
# 以便於處理用戶request 給出response
@app.route("/")
def index():
return "這是首頁  Hello World!"
# 配置路由
# 通過應用裝飾器函數來構建視圖函數  視圖函數必須有return
# /表示網站的首頁  根路徑
if __name__ == "__main__":
app.run(debug=True, port=8888)
# 運行app應用 並開啟調試模式 
# 默認端口為5000 自定義端口為8888  可以省略
Python全棧 Web(Flask框架、安裝、應用)

一個Flask框架就搭建好了

Python全棧 Web(Flask框架、安裝、應用)

Flask路由(route):

什麼是路由?

客戶端發送給WEB服務器 WEB服務器再將請求發送給Flask程序實例

程序實例需要知道每個url請求要運行哪些代碼,所以需要建立一個

url 到 python 函數的映射,處理url和函數之間的關係的程序就是

路由在Flask中,路由是通過 @app.route 裝飾器來表示的

路由:

@app.route('/login')
def login():
return '這是登錄頁面'
@app.route('/register')
def register():
return '這是註冊頁面'

基本參數的路由:

# 定義帶一個參數的路由
@app.route('/show1/<name>')
def show1(name):
return "

姓名為:%s

" % name
/<name>

多參數路由:

# 定義帶兩個參數的路由 參數可以更多
@app.route('/show2/<name>/')
def show2(name,age):
return "

姓名為:%s,年齡為:%s" % (name,age)

/<name>

指定參數數據類型路由:

# 定義帶兩個參數的路由,其中,age參數指定為整數
@app.route('/show3/<name>/
')
def show3(name,age):
# age : 為 整型,並非 字符串
return "傳遞進來的參數是name:%s,age:%d" % (name,age)
/<name>

Flask中所有支持的類型轉換器:

:

類型轉換器指定類型 表示age參數是一個整數 數據類型

不寫 默認字符串類型 不能有“/” 代表一個路徑

int: 整型

float:浮點型

path: 字符串型 可以有斜槓

@app.route("/show/<name>/")
@app.route("/show/<name>//<score>")
@app.route("show/<file>")
/<file>/<score>
/<name>
/<name>

多URL的路由匹配:

在一個視圖函數上可以添加多個裝飾器來指定rul路由的匹配規則

一個視圖處理函數中設置多個url路由規則

# 多 URL 路由匹配 可以一直網上寫~
@app.route('/')
@app.route('/index')
@app.route('/<page>')
@app.route('/index/<page>')
def index(page=None):
if page is None:
page = 1
return "當前頁數為:%d" % page
/<page>/<page>

路由設置HTTP請求方法

路由規則允許設置對應的請求方法

只有將匹配上請求方法路徑交給視圖函數處理去執行

@app.route('/post',methods=['POST','GET'])
def post():
return '這是post請求方式進來的'

只有POST請求方式允許訪問 localhost:5000/post

URL 的解析

正向解析:

程序自動解析 根據@app.route() 裝飾器中的訪問路徑來處理函數

反向解析:

通過視圖處理函數的名稱自動生成視圖處理函數的訪問路徑

Flask中提供了url_for(fun, ...)函數 用於反向解析

參數:

fun:指向函數名稱(通過app.route()裝飾後的函數)

後續:對應要構建的url上的變量


@app.route('/url')
def url_views():
# 將 login() 反向解析訪問地址
logUrl = url_for('login')
resp = " "
return resp
# 將 show2(name,age) 反向解析訪問地址
url = url_for('show2',name = 'Paris',age = 18)
print(url)
resp = " " 直接解析為超鏈接
return resp

特殊:

url_for("static", filename="style.css")

靜態文件反向解析

模板:

什麼是模板?

還是一個包含響應文本的文件 通常也是HTMl文件

該文件中可以包含“佔位變量” 來表示動態的內容

具體值 只有在請求中才能獲取 "佔位變量"最後會被真實的值替換

模板最終也會被解析成響應的字符串 這一過程也稱為"渲染"

Flask實際上是使用 Jinja2 強大的模板引擎

模板的設置:

默認情況下 Flask會在程序文件夾中的 templates 子文件夾中自動尋找模板

需要收動創建 templates 子文件夾 裡面放HTML文件

Python全棧 Web(Flask框架、安裝、應用)

渲染模板:

在視圖函數中 通過 return render_tepmlate() 將模板渲染成字符串再響應給客戶端

render_template("xxx.html", arg1=value1, ...):

參數1:

xxx.html 要渲染給客戶端的HTML模板文件

參數2~n:

可以省略 要傳遞給模板動態顯示的變量佔位符

返回值:

字符串

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
str = render_template('index.html')
print(str)
return str
if __name__ == '__main__':
app.run(debug=True,port=5555)

送書了!送書了!送書了!查看置頂圖文,想要的書都是你的!

更多資訊,盡在雲棲科技快訊~

來科技快訊看新聞鴨~

快點關注我認識我愛上我啊~~~

Python全棧 Web(Flask框架、安裝、應用)


分享到:


相關文章: