python之路_flask框架_框架入門

  Flask是一個基於Python開發而且依賴jinja2模板和Werkzeug WSGI服務的一個微型框架,對於Werkzeug本質是Socket服務端,其用於接收http請求並對請求進行預處理,而後觸發Flask框架,開發人員基於Flask框架提供的功能對請求進行相應的處理,並返回給用戶,若是要返回給用戶複雜的內容時,須要藉助jinja2模板來實現對模板的處理,即:將模板和數據進行渲染,將渲染後的字符串返回給用戶瀏覽器。html

  默認狀況下,Flask 不包含數據庫抽象層、表單驗證,或是其它任何已有多種庫能夠勝任的功能。然而,Flask 支持用擴展來給應用添加這些功能,如同是 Flask 自己實現的同樣。衆多的擴展提供了數據庫集成、表單驗證、上傳處理、各類各樣的開放認證技術等功能。Flask 也許是「微小」的,但它已準備好在需求繁雜的生產環境中投入使用。數據庫

#django與flask框架對比:
'''
Django:無socket、中間件、路由系統、視圖(CBV,FBV)、 模板、ORM、cookie、Session、Admin、Form、緩存、信號、序列化....
Flask:無socket、中間件(擴展)、路由系統、視圖(CBV)、第三方模板(jinja2)、cookie和Session很弱
'''

1、創建虛擬環境django

  具體步驟以下:flask

'''
一、pip3 install virtualenv
        
二、建立虛擬環境
        virtualenv env1(虛擬環境名) :切換到任意路徑執行
        
三、進入虛擬環境
        Scripts/activate:切到Scripts文件下,執行activate
        
四、退出虛擬環境
    Scripts/deactivate:切到Scripts文件下,執行deactivate
'''

  pycharm中建立和使用虛擬環境:瀏覽器

  flask安裝以下,建議使用pip3,不然可能會報諸如 Running setup.py install for MarkupSafe ... error的錯:緩存

pip3 install flask

2、入門實例cookie

from flask import Flask
app=Flask(__name__)

#路由方式一(經常使用)

@app.route("/index")
def index():
    return "hello world"

#路由方式二
'''
def index():
    return "thank you"
app.add_url_rule("/index/","s1",index)   (s1爲url別名)
'''


if __name__ == '__main__':
    app.run()

3、登陸實例session

  代碼以下:app

from flask import Flask,request,redirect,render_template,session

app=Flask(__name__,template_folder="templates",static_url_path="/xxx")
app.secret_key="aslsbjnasbdanksljkma"  #設置session須要的密鑰


@app.route("/login/",methods=["GET","POST"])
def login():
    if request.method=="POST":
        # print(request.form)  #獲取form表單數據,爲字典
        username=request.form.get("user")
        userpswd=request.form.get("pswd")
        if username=="alex" and userpswd=="123":
            session["userifo"]=username
            return redirect("/index/")
        else:
            # return render_template("login.html",msg="用戶名或者密碼錯誤")                #模板傳值方式一
            return render_template("login.html",**{"msg":"用戶名或者密碼錯誤"})      #模板傳值方式二
    else:
        return render_template("login.html")

@app.route("/index/",methods=["GET"])
def index():
    return "登陸成功"

if __name__ == '__main__':
    app.run()

 一、靜態文件配置框架

二、session設置

三、模板傳值方式

四、路由匹配參數

4、知識回顧

一、無參數裝飾器

# 無參數的裝飾器
def wapper(f):
    def inner(*args,**kwargs):
        return f(*args,**kwargs)
    return inner

@wapper
def func(arg):
    print(arg)

func(123)

二、有參數裝飾器

# 有參數的裝飾
def outer(num):
    def wapper(f):
        def inner(*args,**kwargs):
            return f(*args,**kwargs)
        return inner
    return wapper
@outer(666)                     # 先執行outer(666),獲取返回值; @wapper,再執行wapper函數wapper(func); func=inner函數
def func(arg):
    print(arg)

func(123)
相關文章
相關標籤/搜索