一、Web前端與後端(Python Web) 1.Web前端:網頁,包含HTML,CSS,JS。 靜態網頁:不能與伺服器交互的網頁 動態網頁:能夠與伺服器交互的網頁 2.Web後端:、Flask,Django、Ajax技術 二、伺服器 1.伺服器:為用戶提供服務的電腦,將數據抽象成URL,以供用戶 ...
一、Web前端與後端(Python Web)
1.Web前端:網頁,包含HTML,CSS,JS。
靜態網頁:不能與伺服器交互的網頁
動態網頁:能夠與伺服器交互的網頁
2.Web後端:、Flask,Django、Ajax技術
二、伺服器
1.伺服器:為用戶提供服務的電腦,將數據抽象成URL,以供用戶訪問。
2.組成:
- 硬體:主機
- 軟體:能夠處理用戶請求的程式:Apache、Tomcat、IIS (Internet Information Service)、Nginx
3.作用:
- 存儲Web相關的數據
- 處理請求和響應
- 具備安全性
三、框架
框架:為瞭解決一些開放性問題,重覆性問題而產生的程式結構
框架模式:
MVC
- M:模型層Model,與資料庫打交道
- V:視圖層View
- C:控制層Controller,處理請求與響應
MTV(Flask)
- M:模型層Model
- T:Template模板(HTML模板),
- V:View視圖層,處理請求與響應
四、Flask使用
1.Flask是一個基於Python並依賴於Jinja2模板引擎和WerkZeug WSGI服務的框架。
WSGI:Web Server Gateway Interface.Web服務網關介面,提供處理網路請求相關的功能
路由:為了匹配用戶的請求地址,會自動執行視圖函數,視圖函數中必須有返回值,返回字元串顯示到相應的頁面中。
1、定義路由及視圖函數
@app.route('/地址')
def funcName():
return "" #響應到頁面中的內容
# 視圖函數 @app.route("/") def index(): # 匹配到路徑後執行的視圖函數 return "<h1>歡迎</h1>"
2、定義帶參數的路由
變數:<變數名>
@app.route("/login/<name>/<age>")
def login(name,age):
return "%s,%s" % (name,age)
註意:路徑中的參數變數永遠是字元串類型
@app.route('/login/<name>/<age>') def login(name, age): return "<h1>歡迎登錄,%s,%s</h1>" % (name, age)
3、類型轉換器
預設 字元串,不能包含'/'
int: 轉換整數
float: 轉換小數
path: 字元串,允許包含'/'
使用:
@app.route('/show/<int:num>')
@app.route('/calcute/<int:n1>/<int:n2>') def calcute(n1,n2): # n1 = int(n1) # n2 = int(n2) n3 = n1 + n2 return "%d + %d = %d" %(n1,n2,n3)
4、多個URL執行同一個視圖函數
@app.route('/')
@app.route('/index')
def index():
return "首頁"
@app.route('/show') @app.route('/show/list') @app.route('/show/<name>') def show(name="ze"): return "show %s" % name
註意:
如果在app.run()設置host="0.0.0.0";不影響當前虛擬IP(127.0.0.1);可以讓當前區域網中其他的電腦,通過內網IP訪問伺服器
5、模板
1、模板是一種特殊的HTML文件,Python+html網頁結構,允許在模板文件中使用變數
2、導入render_template
3、項目中創建“templates”文件夾,存放模板文件
視圖函數中定義變數 name=""、age=、dic=、tub、list 將數據傳遞到模板文件中顯示
def show():
name="xb"
return render_remplate("",uname=name)
模板文件中使用 {{ uname }}
# 模板 @app.route('/info') def info(): # 返回模板文件,可以傳遞變數 return render_template("01-show.html", name="flask", age=20)
01-show.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 模板文件 <h1>{{ name }}</h1> <h1>{{ age }}</h1> </body> </html>
最後把代碼彙總一下
from flask import Flask, render_template app = Flask(__name__) # 創建Flask的程式實例 # 視圖函數 @app.route("/") def index(): # 匹配到路徑後執行的視圖函數 return "<h1>歡迎</h1>" @app.route('/login/<name>/<age>') def login(name, age): return "<h1>歡迎登錄,%s,%s</h1>" % (name, age) @app.route('/calcute/<int:n1>/<int:n2>') def calcute(n1,n2): # n1 = int(n1) # n2 = int(n2) n3 = n1 + n2 return "%d + %d = %d" %(n1,n2,n3) @app.route('/show') @app.route('/show/list') @app.route('/show/<name>') def show(name="ze"): return "show %s" % name # 模板 @app.route('/info') def info(): # 返回模板文件,可以傳遞變數 return render_template("01-show.html", name="flask", age=20) if __name__ == "__main__": app.run(debug=True)