您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹Django項目怎么使用靜態文件,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、使用靜態文件
首先在你的polls目錄中創建一個static目錄。Django將在那里查找靜態文件,這與Django在polls/templates/中尋找對應的模板文件的方式是一致的。
Django的STATICFILES_FINDERS設置項中包含一個查找器列表,它們知道如何從各種源中找到靜態文件。 其中一個默認的查找器是AppDirectoriesFinder,它在每個INSTALLED_APPS下查找static子目錄,例如我們剛創建的那個static目錄。admin管理站點也為它的靜態文件使用相同的目錄結構。
在剛才的static目錄中新建一個polls子目錄,再在該子目錄中創建一個style.css文件。換句話說,這個css樣式文件應該是polls/static/polls/style.css。你可以通過書寫polls/style.css在Django中訪問這個靜態文件,與你如何訪問模板的路徑類似。
靜態文件的命名空間:
與模板類似,我們可以將靜態文件直接放在polls/static(而不是創建另外一個polls 子目錄),但實際上這是一個壞主意。Django將使用它所找到的第一個匹配到的靜態文件,如果在你的不同應用中存在兩個同名的靜態文件,Django將無法區分它們。我們需要告訴Django該使用其中的哪一個,最簡單的方法就是為它們添加命名空間。也就是說,將這些靜態文件放進以它們所在的應用的名字同名的另外一個子目錄下(白話講:多建一層與應用同名的子目錄)。
PS:良好的目錄結構是每個應用都應該創建自己的urls、forms、views、models、templates和static,每個templates包含一個與應用同名的子目錄,每個static也包含一個與應用同名的子目錄。
將下面的代碼寫入樣式文件polls/static/polls/style.css:
li a { color: green;}
接下來在模板文件polls/templates/polls/index.html的頭部加入下面的代碼:
{% load static %}<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">
{% static %}模板標簽會生成靜態文件的絕對URL路徑。
重啟服務器,在瀏覽器訪問http://localhost:8000/polls/,你會看到Question的超級鏈接變成了綠色(Django風格!),這意味著你的樣式表被成功導入了。(如果不行就ctrl + F5強制刷新瀏覽器頁面,防止緩存。)
二、添加背景圖片
下面,我們在polls/static/polls/目錄下創建一個用于存放圖片的images子目錄,在這個子目錄里放入`background.gif文件。換句話說,這個文件的路徑是polls/static/polls/images/background.gif。(你可以使用任何你想要的圖片)
在css樣式文件polls/static/polls/style.css中添加下面的代碼:
body { background: white url("images/background.gif") no-repeat;}
重新加載http://localhost:8000/polls/(CTRL+F5或者直接F5),你會在屏幕的左上角看到載入的背景圖片。
提示:
很顯然,{% static %}模板標簽不能用在靜態文件,比如樣式表中,因為他們不是由Django生成的。 你應該使用相對路徑來相互鏈接靜態文件,因為這樣你可以改變STATIC_URL( static模板標簽用它來生成URLs)而不用同時修改一大堆靜態文件中路徑相關的部分。
三、直接訪問靜態文件
實際上不管是在Django開發服務器上,還是在nginx+uwsgi+django部署的服務器上,都可以直接通過url訪問靜態文件,不需要在Django中專門為每個靜態文件編寫url路由和視圖。
比如,通過http://www.liujiangblog.com/static/images/default_avatar_male_50.gif你就可以直接獲得網站用戶的默認頭像圖片了。
關于Django項目怎么使用靜態文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。