1. 程式人生 > 其它 >Pycharm開發Django專案載入靜態檔案

Pycharm開發Django專案載入靜態檔案

載入靜態檔案

在一個網頁中,不僅僅只有一個html骨架,還需要css樣式檔案,js執行檔案以及一些圖片等。因此在DTL中載入靜態檔案是一個必須要解決的問題。在DTL中,使用static標籤來載入靜態檔案。要使用static標籤,首先需要{% load static %}。載入靜態檔案的步驟如下:

  1. 首先確保django.contrib.staticfiles已經新增到settings.INSTALLED_APPS中。

  2. 確保在settings.py中設定了STATIC_URL

  3. 在已經安裝了的app下建立一個資料夾叫做static,然後再在這個static資料夾下建立一個當前app的名字的資料夾,再把靜態檔案放到這個資料夾下。例如你的app

    叫做book,有一個靜態檔案叫做zhiliao.jpg,那麼路徑為book/static/book/zhiliao.jpg。(為什麼在app下建立一個static資料夾,還需要在這個static下建立一個同app名字的資料夾呢?原因是如果直接把靜態檔案放在static資料夾下,那麼在模版載入靜態檔案的時候就是使用zhiliao.jpg,如果在多個app之間有同名的靜態檔案,這時候可能就會產生混淆。而在static資料夾下加了一個同名app資料夾,在模版中載入的時候就是使用app/zhiliao.jpg,這樣就可以避免產生混淆。)

  4. 如果有一些靜態檔案是不和任何app掛鉤的。那麼可以在settings.py

    中新增STATICFILES_DIRS,以後DTL就會在這個列表的路徑中查詢靜態檔案。比如可以設定為:

     STATICFILES_DIRS = [
         os.path.join(BASE_DIR,"static")
     ]
    
  5. 在模版中使用load標籤載入static標籤。比如要載入在專案的static資料夾下的style.css的檔案。那麼示例程式碼如下:

     {% load static %}
     <link rel="stylesheet" href="{% static 'style.css' %}">
    
  6. 如果不想每次在模版中載入靜態檔案都使用load載入static

    標籤,那麼可以在settings.py中的TEMPLATES/OPTIONS新增'builtins':['django.templatetags.static'],這樣以後在模版中就可以直接使用static標籤,而不用手動的load了。

  7. 如果沒有在settings.INSTALLED_APPS中新增django.contrib.staticfiles。那麼我們就需要手動的將請求靜態檔案的url與靜態檔案的路徑進行映射了。示例程式碼如下:

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # 其他的url對映
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)