不能被run的flask實例;至關於django中的app01 應用html
藍圖做用:功能隔離 路由隔離python
Blueprint就是 一個不能run的flaskdjango
藍圖的名稱app01user 必須保證在app中是惟一flask
url_prefix 是url前綴;用於隔離相同urlsession
# blueprint.py from flask import Flask app = Flask(__name__) app.debug = True # 創建藍圖註冊 必定要註冊 from app01.views import user as app01_user from app02.views import user as app02_user app.register_blueprint(app01_user) app.register_blueprint(app02_user) if __name__ == '__main__': app.run()
app01app
from flask import Blueprint, render_template # Blueprint就是 一個不能run的flask # 藍圖的名稱app01user 必須保證在app中是惟一 user = Blueprint("app01user", __name__, template_folder="app01/templates/", url_prefix="/admin") # url_prefix是url前綴;用於隔離相同url @user.route('/login') def login(): # return "i am app01 blueprint" return render_template("login.html")
app02函數
from flask import Blueprint, render_template # Blueprint就是 一個不能run的flask user = Blueprint("app02user", __name__, url_prefix="/shopping") # url_prefix @user.route('/login') def login(): return "i am app02 blueprint" # return render_template('login.html')
# __init__,py from flask import Flask from app01.views.blueptrint import user #導入藍圖 def create_app(): app = Flaks(__name__) app.congig['DEBUG'] = True # 註冊藍圖 app.register_blueprint(user) # 將app返回 return app
# manage.py # 導入app 實例 from app01 import create_app app = create_app() # 運行 if __name__ = '__main__' app.run()
# views 下 建立藍圖 blueprint from flask import Blueprint # 藍圖實例 user爲藍圖名稱 user = Blueprint("user" , __name__) @user.route("/login") def login(): return "ok 200"
此時就能夠運行manage.py文件了;或者Terminal下執行命令 python manage.py運行。url
@app.before_request 請求進入視圖函數以前debug
@app.after_request 請求結束,返回影響客戶端以前code
正常 be1 - be2 - be3 - vf - af3 - af2 - af1
異常 be1 - be2 - af3 - af2 - af1
@app.errorhandler(4xx or 5xx) 重定義錯誤信息
from flask import Flask, request, session, redirect, render_template from functools import wraps app = Flask(__name__) app.secret_key = "!@#$%^&*()" USER = {"username": "anwen"} # def wrapper(func): # @wraps(func) # def inner(*args, **kwargs): # if session.get("user"): # ret = func(*args, **kwargs) # return ret # else: # return redirect("/login") # # return inner @app.before_request def be1(): print("be1") @app.before_request def be2(): print("be2") if request.path == "/login": return None if session.get("user"): return None else: return redirect("/login") @app.before_request def be3(): print("be3") @app.after_request def af1(res): print("af1") return res @app.after_request def af2(res): print("af2") return res @app.after_request def af3(res): print("af3") return res @app.route('/login', methods=["GET", "POST"]) # @wrapper def login(): if request.method == 'GET': return render_template("login.html") else: if request.form.get("username") == USER["username"]: session['user'] = request.form.get("username") return redirect('/index') @app.route("/index") # @wrapper def index(): print("我是視圖函數index") return render_template("index.html") @app.route("/index1") # @wrapper def index1(): return render_template("index.html") @app.route("/index2") # @wrapper def index2(): return render_template("index.html") @app.errorhandler(404) def error404(ErrorMessage): print(ErrorMessage) return redirect("https://www.autohome.com.cn/beijing/asdfe32r24rff23r23r") # return send_file("image/1.jpg") if __name__ == '__main__': app.run()