实例化Flask时的参数
from flask import Flask,request,session,render_template,redirect,url_for,send_file import setting app = Flask(__name__,template_folder="temp",static_folder="jingtaiwenjianmulu",static_url_path="/static") # app.secret_key = "jinwangbaMD5de" # app.config["SECRET_KEY"] = "jinwangbaMD5de" # app.config # app.session_cookie_name = "qishiwoyebuzhidaozheshishenmedongxi" app.config.from_object(setting.Debug) # app.config.from_object(setting.XianShang) # app.config.from_object(setting.Testing) def wai(func): def neibuhanshu(*args,**kwargs): if session.get("user"): ret = func(*args,**kwargs) return ret else: return redirect("/login") return neibuhanshu # @app.route("/static/<filename>") # def get_static(filename): # # falsk -> static_folder -> # return send_file("statics/" + filename) @app.route("/<nid>",endpoint="index",methods=["POST","GET"]) # @wai def index(nid): # wai(index) -> neibuhanshu -> () endpoint 默认视图函数名 # print(url_for("neibuhanshu")) # print(url_for("neibuhanshu")) # print(url_for("qishijiushiyigexiangxiyemian")) # print(nid) return render_template("index.html") @app.route("/detail",endpoint="detail") # @wai def detail(): # wai(detail) -> neibuhanshu -> () return render_template("detail.html") @app.route("/login",methods=["GET","POST"],strict_slashes=False) def login(): if request.method == "GET" : return render_template("login.html") else: session["user"] = request.form.get("username") return redirect("/") if __name__ == '__main__': app.run(debug=True)
蓝图
users.py文件中:不能app.run from flask import Blueprint,render_template users_blue = Blueprint("users",__name__,template_folder="user_temp",url_prefix="/user") @users_blue.route("/user_add") #/user/user_add def user_add(): return render_template("user_add.html")
使用时记得注册:通过蓝图中的路由访问, app_blue.py文件中: from flask import Flask,request,session,render_template,redirect,url_for,send_file import setting from serv import users app = Flask(__name__,template_folder="temp",static_folder="jingtaiwenjianmulu",static_url_path="/static") app.config.from_object(setting.Debug) app.register_blueprint(users.users_blue) if __name__ == '__main__': app.run(debug=True)
before_request 和 after_request:
执行顺序:
正常:be1 - be2 - be3 - af3 - af2 - af1
异常:be1 - af3 - af2 - af1
from flask import Flask,request,session,render_template,redirect,url_for,send_file import setting from serv import users app = Flask(__name__,template_folder="temp",static_folder="jingtaiwenjianmulu",static_url_path="/static") app.config.from_object(setting.Debug) app.register_blueprint(users.users_blue) @app.before_request def is_login(): print("be1") if request.path == "/login": return None if session.get("user"): return None else: return redirect("/login") @app.before_request def be2(): print("be2") return None @app.before_request def be3(): print("be3") return None @app.after_request def af3(res): print("af3") return res @app.after_request def af2(res): print("af2") return res @app.after_request def af1(res): print("af1") return res @app.route("/",endpoint="index",methods=["POST","GET"]) def index(): # wai(index) -> neibuhanshu -> () endpoint 默认视图函数名 return render_template("index.html") @app.route("/detail",endpoint="detail") def detail(): # wai(detail) -> neibuhanshu -> () return render_template("detail.html") @app.route("/login",methods=["GET","POST"],strict_slashes=False) def login(): if request.method == "GET" : return render_template("login.html") else: session["user"] = request.form.get("username") return redirect("/") @app.errorhandler(404) def error404(args): print(args) return "您访问的页面不存在或者走丢了,,,,,,%s"%(args) if __name__ == '__main__': app.run(debug=True)
app对象配置:
class Debug(object): DEBUG=True SECRET_KEY="jinwangba" SESSION_COOKIE_NAME = "jinwangba's session" class Testing(object): TESTING=True SECRET_KEY="yinwangba" SESSION_COOKIE_NAME = "yinwangba's session" class XianShang(object): SECRET_KEY = "KingEight" SESSION_COOKIE_NAME = "CSRF_TOKEN"
使用: app.debug = True app.config["DEBUG"]=True class FlaskSetting(object): DEBUG = True app.config.from_object(FlaskSetting)