flask url_for的使用


先說一下static_floder,static_url_path

#######app.py
from flask import Flask,redirect,render_template,jsonify,send_file,request,url_for # app
= Flask(__name__,template_folder="temp",static_folder="lvxing",static_url_path="/static") #測試用的模板不使用url_for,一旦靜態資源文件名改變,需要兩個配置 app = Flask(__name__,template_folder="temp",static_folder="lvxing")#測試用的模板不使用url_for,這樣是錯的
 #####static_folder指認靜態文件存放目錄(默認是程序根目錄下的static文件夾,如果改變名稱了,而模板中引用靜態文件寫的是static,解決辦法是,添加static_floder="此時存放靜態資源的文件名
####")而模板中的自動訪問路徑是static/文件名,故還需要配置 static_url_path="/static",告訴程序我訪問的static路徑,不要拒絕我
###模板中使用url_for,如下方的login.html ,只需要配置static-floder,圖片請求路徑為/lvxing......如果非得配置static_url_path="static",模板圖片請求路徑為/static.... @app.route("/imger",<int:page>) def imge(page): return "huhu" @app.route("/fan") def fan(): print("oooo",url_for("img",oo="ui", _external=True)) #生成查詢參數oooo http://127.0.0.1:5000/imger/?oo=ui 此時img函數是不能攜帶page動態參數的 print("oooosas",url_for("img",page=4)) #生成相對路徑 oooosas /imger/4 return "tangjianwei"
app.run(debug=True) #啟動flask

####login.html
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, initial-scale=1",> </head> <body> <h1>jiji</h1> <img src="{{ url_for("static",filename="333.jpg") }}" alt=""> #配置static_folder和static_url_path請求的時候發送路徑http://ip:5000/static/333.jpg
                                        #只配置static_folder路徑為/lvxing.333.jpg
                                        #配置static_folder之后,只要模板中filename隨着靜態資源文件夾下的資源名自動變化
#<img src="/static/444.jpg" alt="">#請求的時候發送路徑http://ip:5000/static/444.jpg

</body> </html>

url_for藍圖中的使用

#藍圖文件中 
flask import Blueprint,render_template,redirect,url_for cat_obj=Blueprint("cat_obj",__name__) @cat_obj.route("/cat3") def add_def2(): print(t) return "我是cat3" @cat_obj.route("/cat1") def add_def3(): return redirect(url_for(".add_def2"))
#####app.py
from
flask import Flask,session,redirect,request,render_template from add import add_lv from alter import alter from del_lv import dell from cat import cat app = Flask(__name__) app.register_blueprint(cat.cat_obj,url_prefix="/cat") #注冊藍圖 @app.route("/") def index(): print("我是視圖函數") return "123" app.run(debug=True)

#瀏覽器訪問http://127.0.0.1:5000/cat/cat1 ---->然后進行跳轉到def add_def2函數

引用資料

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM