<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] 前面我們編寫了一個經過測試的投票應用,現在讓我們給它添加一張樣式表和一張背景圖片。 <br /> 除了由服務器生成的HTML文件外,WEB應用一般需要提供一些其它的必要文件,比如圖片文件、JavaScript腳本和CSS樣式表等等,用來為用戶呈現出一個完整的網頁。在Django中,我們將這些文件統稱為“靜態文件”,因為這些文件的內容基本是固定不變的,不需要動態生成。 <br /> 對于小項目,這些都不是大問題,你可以將靜態文件放在任何你的web服務器能夠找到的地方。但是對于大型項目,尤其是那些包含多個app在內的項目,處理那些由app帶來的多套不同的靜態文件是個麻煩活。 <br /> 但這正是`django.contrib.staticfiles`的用途:它收集每個應用(和任何你指定的地方)的靜態文件到一個統一指定的地方,并且易于訪問。 <br /> ## **一、使用靜態文件** 首先在你的polls目錄中創建一個`static`目錄(一定要注意,不是statics,不要多寫了一個s)。Django將在那里查找靜態文件,這與Django在polls/templates/中尋找對應的模板文件的方式是一致的。 <br /> Django的`STATICFILES_FINDERS`設置項中包含一個查找器列表,它們知道如何從各種源中找到靜態文件。 其中一個默認的查找器是`AppDirectoriesFinder`,它在每個`INSTALLED_APPS`下查找`static`子目錄,例如我們剛創建的那個`static`目錄。admin管理站點也為它的靜態文件使用相同的目錄結構。 <br /> 在剛才的`static`目錄中新建一個`polls`子目錄,再在該子目錄中創建一個`style.css`文件。換句話說,這個css樣式文件應該是`polls/static/polls/style.css`。你可以通過書寫`polls/style.css`在Django中訪問這個靜態文件,與你如何訪問模板的路徑類似。 <br /> **靜態文件的命名空間:** 與模板類似,我們可以將靜態文件直接放在`polls/static`(而不是創建另外一個polls 子目錄),但實際上這是一個壞主意。Django將使用它所找到的第一個匹配到的靜態文件,如果在你的不同應用中存在兩個同名的靜態文件,Django將無法區分它們。我們需要告訴Django該使用其中的哪一個,最簡單的方法就是為它們添加命名空間。也就是說,將這些靜態文件放進以它們所在的應用的名字同名的另外一個子目錄下(白話講:多建一層與應用同名的子目錄)。 <br /> **PS:良好的目錄結構是每個應用都應該創建自己的urls、forms、views、models、tests、apps、templates和static,每個templates包含一個與應用同名的子目錄,每個static也包含一個與應用同名的子目錄。** <br /> 將下面的代碼寫入樣式文件`polls/static/polls/style.css`: ~~~ li a { color: green; } ~~~ 接下來在模板文件`polls/templates/polls/index.html`的頭部加入下面的代碼: ~~~ {% load static %} # 這一行放到文件最頂部 # 這一行放到head標簽中 <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}"> ~~~ <br /> `{% static %}`模板標簽會生成靜態文件的絕對URL路徑。 需要在settings中設置下面代碼才可以工作,否則找不到css文件路徑: ``` # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.2/howto/static-files/ STATIC_ROOT = "./" STATIC_URL = '/static/' ``` <br /> 重啟服務器,在瀏覽器訪問`http://localhost:8000/polls/`,你會看到Question的超級鏈接變成了綠色(Django風格!),這意味著你的樣式表被成功導入了。(如果不行就ctrl + F5強制刷新瀏覽器頁面,防止緩存。) <br /> ## **二、添加背景圖片** 下面,我們在`polls/static/polls/`目錄下創建一個用于存放圖片的`images`子目錄,在這個子目錄里放入`background.jpg`文件。換句話說,這個文件的路徑是`polls/static/polls/images/background.jpg`。(你可以使用任何你想要的圖片) 在css樣式文件`polls/static/polls/style.css`中添加下面的代碼: ~~~ body { background: white url("images/background.jpg") no-repeat; } ~~~ 重新加載`http://localhost:8000/polls/`(CTRL+F5),你會在屏幕的左上角看到載入的背景圖片。 下面是張參考效果圖: ![](https://img.kancloud.cn/da/04/da04417220377b5af370ca510ab78e43_1082x243.png) **提示:** 很顯然,`{% static %}`模板標簽不能用在靜態文件,比如樣式表中,因為他們不是由Django生成的。 你應該使用相對路徑來相互鏈接靜態文件,因為這樣你可以改變`STATIC_URL`( static模板標簽用它來生成URLs)而不用同時修改一大堆靜態文件中路徑相關的部分。 <br /> ## **三、直接訪問靜態文件** 實際上不管是在Django開發服務器上,還是在`nginx+uwsgi+django`部署的服務器上,都可以直接通過url訪問靜態文件,不需要在Django中專門為每個靜態文件編寫url路由和視圖。 比如,通過[http://www.liujiangblog.com/static/images/default\_avatar\_male\_50.gif](http://www.liujiangblog.com/static/images/default_avatar_male_50.gif)你就可以直接獲得網站用戶的默認頭像圖片了。 本節簡要的介紹了如何使用靜態文件,更多的內容留待后續。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看