聊聊Flask的項目結構(二)——靜態文件的管理

在一個項目中如何去管理頁面模板,樣式,js腳本,圖片等一件重要的事情,Flask在這方面已經幫我們默認了兩個路徑:

1、Jinja2頁面模板 (templates文件夾)

2、靜態文件(static文件夾)

所以我們只需要按照這個命名在我們的weixin文件夾下面創建這兩個路徑即可。(如下圖所示)
這裏寫圖片描述

1、html模板渲染

接下來就是怎麼調用了,首先我們講一下頁面模板的渲染,flask中使用到的函數是render_template函數,render_template函數的第一個參數就是html模板文件,後面的參數是我們需要傳到這個視圖函數中的參數。render_template默認會從項目路徑下面的templates文件夾中尋找html模板文件。

首先我們在templates文件夾中創建一個名爲index.html的網頁文件。

然後在admin中的視圖文件中新增一個視圖函數

wenxin/admin/views.py

...
from flask import render_template
...
@admin.route("/helloworld/<username>")

def helloworld(username):

    username2 = "near"

    return render_template("index.html", username=username, username2=username2)

從上面可以看到我給頁面傳遞了一個參數username2,同時如果在訪問localhost/admin/helloworld時,如果帶上一個字符串的話,即localhost/admin/helloworld/adb的話,那麼根據helloworld()視圖函數的寫法,abc將會被賦值給username。

我們在index.html中將這兩個變量顯示出來。在jinja2中,變量顯示要用{{ }}這樣子的括號括起來。

weixin/templates/index.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Hello World</title>

</head>

<body>

    hello, {{ username }}

    hello, {{ username2 }}

</body>

</html>

接下來啓動應用,在虛擬環境下運行python manage.py

在瀏覽器訪問

http://localhost:5000/admin/helloworld/abc

就會看到以下的結果
這裏寫圖片描述
可以看到我們的兩個變量成功的顯示在頁面上,證明html模板文件渲染成功。

需要注意的,如果我們想修改默認的模板路徑,可以通過jinja_loader來進行修改,例如

admin.jinja_loader = your templates dir

2、靜態文件的鏈接構成

說完模板渲染,我們來說說靜態文件的鏈接構成,這裏需要用到一個比較重要的函數——url_for()

這個函數可以幫助我們準確的構建一條鏈接並且可以傳遞參數。

前面提到flask的靜態文件保存在static中,這是flask默認的一個視圖函數,因此要訪問static可以通過admin.static來訪問,所以路勁的構建就是

{{ url_for("static", fllename="" )}}

filename參數是我們要訪問的靜態文件相對於static的路徑+文件名,即例如我們有一張1.jpg的圖片文件在static文件夾下的image文件夾中,那麼使用url_for構建鏈接就應該這麼寫:

{{ url_for("static", filename="image/1.jpg") }}

下面我們就用代碼來演示

在index文件中加入一個img標籤,src屬性的值就是

{{ url_for("static", filename="image/1.jpg") }}

weixin/templates/index.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Hello World</title>

</head>

<body>

    hello, {{ username }}

    hello, {{ username2 }}

    <img src="{{ url_for('static', filename='image/1.jpg') }}">

</body>

</html>

然後我們在之前的static文件夾中創建一個image文件夾,並在其中放入一張命名爲1.jpg的圖片。

接下來運行應用就可以看到圖片顯示在頁面上了。
這裏寫圖片描述
其他的靜態文件也同理,這裏就不多做演示。

總結以下今天的內容,其實就是活用render_template()和url_for()兩個函數和知道flask(jinja2)默認的靜態文件目錄和模板文件目錄。內容比較簡單,相信大家一定很快可以掌握。

下一次的文章講的是flask項目結構中數據庫的部分,感興趣的朋友可以關注以下。

文章代碼
鏈接:http://share.weiyun.com/5899090926e573fc1b2eb6ae4a696a0a (密碼:hg0S)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章