使用flask搭建網(wǎng)站——2.使用鏈接&靜態(tài)文件

鏈接

flask web開發(fā)中,對(duì)鏈接的介紹比較少(可能后面還有,暫時(shí)沒看到那)。
使用鏈接的地方有很多,例如:導(dǎo)航條,新聞列表等等。
其實(shí)靜態(tài)鏈接不難,我們可以直接在基礎(chǔ)模板中定義好鏈接。但是對(duì)于那些動(dòng)態(tài)鏈接怎么辦呢?Flask提供了url_for()輔助函數(shù),他可以使用程序URL映射中保存的信息生成URL(其實(shí)我也不知道什么意思,應(yīng)該是和參數(shù)有關(guān))。

動(dòng)態(tài)鏈接為什么不能直接編寫?
  • 直接編寫URL會(huì)對(duì)代碼中定義的路由產(chǎn)生不必要的依賴關(guān)系。如果重新定義路由,模板中的鏈接就會(huì)失效。

url_for()輔助函數(shù)最簡(jiǎn)單的用法是以視圖函數(shù)名作為參數(shù),返回對(duì)應(yīng)的URL。
我們?cè)趧?chuàng)建一個(gè)flask項(xiàng)目時(shí),有一個(gè)Index()函數(shù),程序中調(diào)用url_for('index'),得到的結(jié)果是/(根路徑)。
調(diào)用url_for('index', _external = True)返回的是絕對(duì)地址,也就是http://localhost:5000/

關(guān)于絕對(duì)地址和相對(duì)地址:程序內(nèi)部的鏈接使用相對(duì)地址就行,如果訪問外部地址必須使用絕對(duì)地址。

那到底怎么訪問動(dòng)態(tài)地址?

將動(dòng)態(tài)部分當(dāng)做參數(shù)傳給url_for()輔助函數(shù)。例如:

url_for('user', name = 'john', _external = True)

那么上面這個(gè)輔助函數(shù)的返回結(jié)果就是,http://localhost:5000/user/john。

輔助函數(shù)url_for()的參數(shù)不局限于動(dòng)態(tài)路由中的參數(shù),也可以傳入任何額外參數(shù)添加到查詢字符串中。
例如:url_for('index', page = 2)的返回結(jié)果是 /?page=2。

靜態(tài)文件

web程序不僅由Python代碼和模板(template)組成,多數(shù)程序還會(huì)使用靜態(tài)文件,例如HTML靜態(tài)頁面,JS源碼文件,CSS文件。
對(duì)靜態(tài)文件引用會(huì)被當(dāng)做一個(gè)特殊的路由,/static/<filename>。
例如,調(diào)用url_for('static', filename = 'css/styles.css', _external = True),得到的結(jié)果是http://localhost:5000/static/css/styles.css。

默認(rèn)情況下,F(xiàn)lask在程序的根目錄下有一個(gè)static文件夾,我們可以把靜態(tài)文件都放在這個(gè)文件夾里。
如果服務(wù)器收到static開頭的路徑的請(qǐng)求,會(huì)生成一個(gè)響應(yīng),包含文件系統(tǒng)中static/css/styles.css(這種格式)文件的內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,412評(píng)論 22 257
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 第三章 模板 序 為什么要分離 易于維護(hù)的代碼,關(guān)鍵在于保持簡(jiǎn)單的結(jié)構(gòu)。而我們之前編寫的hello.py雖然簡(jiǎn)單,...
    科幻經(jīng)典閱讀 1,612評(píng)論 0 6
  • 那年的深秋時(shí)節(jié) 你去了遙遠(yuǎn)而神秘的地方 聽說那里 如水一般純凈 聽說那里 有距離天堂很近的路 我經(jīng)常想 西藏到底有...
    王玉仙閱讀 559評(píng)論 1 2
  • IRONYT閱讀 219評(píng)論 0 0

友情鏈接更多精彩內(nèi)容