Django學(xué)習(xí)-第五講:模板中靜態(tài)文件的加載

1. 靜態(tài)文件

一個(gè)網(wǎng)站中除了正常的html頁面之外,還有相應(yīng)的樣式,以及js等其他的文件,我們把除了html網(wǎng)頁外的文件稱之為靜態(tài)資源文件,下面我們介紹一下怎么在django中去加載靜態(tài)資源文件

1.1 加載靜態(tài)資源文件第1種方法:static標(biāo)簽 {% load static %}

在一個(gè)網(wǎng)頁中,不僅僅只有一個(gè)html骨架,還需要css樣式文件,js執(zhí)行文件以及一些圖片等。因此在DTL中加載靜態(tài)文件是一個(gè)必須要解決的問題。在DTL中,使用static標(biāo)簽來加載靜態(tài)文件。要使用static標(biāo)簽,首先需要{% load static %}。加載靜態(tài)文件的步驟如下:

  • 1.首先確保django.contrib.staticfiles已經(jīng)添加到settings.INSTALLED_APPS中。

  • 2.確保在settings.py中設(shè)置了STATIC_URL。

  • 3.在已經(jīng)安裝了的app下創(chuàng)建一個(gè)文件夾叫做static,然后再在這個(gè)static文件夾下創(chuàng)建一個(gè)當(dāng)前app的名字的文件夾,再把靜態(tài)文件放到這個(gè)文件夾下。

例如你的app叫做book,有一個(gè)靜態(tài)文件叫做logo.jpg,那么路徑為 book/static/book/logo.jpg。(為什么在app下創(chuàng)建一個(gè)static文件夾,還需要在這個(gè)static下創(chuàng)建一個(gè)同app名字的文件夾呢?原因是如果直接把靜態(tài)文件放在static文件夾下,那么在模版加載靜態(tài)文件的時(shí)候就是使用logo.jpg,如果在多個(gè)app之間有同名的靜態(tài)文件,這時(shí)候可能就會(huì)產(chǎn)生混淆。而在static文件夾下加了一個(gè)同名app文件夾,在模版中加載的時(shí)候就是使用app/logo.jpg,這樣就可以避免產(chǎn)生混淆。)

  • 4.如果有一些靜態(tài)文件是不和任何app掛鉤的。那么可以在 settings.py 中添加 STATICFILES_DIRS,以后DTL就會(huì)在這個(gè)列表的路徑中查找靜態(tài)文件。比如可以設(shè)置為:
STATIC_URL = '/static/'
 STATICFILES_DIRS = [
     os.path.join(BASE_DIR,"static")
 ]
  • 5.在模版中使用load標(biāo)簽加載static標(biāo)簽。比如要加載在項(xiàng)目的static文件夾下的style.css的文件。
{% load static %}
 <link rel="stylesheet" href="{% static 'style.css' %}">

1.2 靜態(tài)資源文件的第2種加載方法:不用每次都在頁面中 load static

  • 1 如果不想每次在模版中加載靜態(tài)文件都使用load加載static標(biāo)簽,那么可以在settings.py中TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static'],這樣以后在模版中就可以直接使用static標(biāo)簽,而不用手動(dòng)的load了。
    settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
          'builtins':['django.templatetags.static']
        },
    },
]

  • 2.如果沒有在settings.INSTALLED_APPS中添加django.contrib.staticfiles。
    那么我們就需要手動(dòng)的將請(qǐng)求靜態(tài)文件的url與靜態(tài)文件的路徑進(jìn)行映射了。
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 其他的url映射
] + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0])

通過第2種的方式的配置我們可以直接頁面中書寫 {% static 'css/index.css '%} 這樣的標(biāo)簽,不用再重復(fù) load

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 項(xiàng)目部署到阿里云(nginx+uwsgi)上后,靜態(tài)文件加載沒有問題。但是在本地,使用開發(fā)服務(wù)器,卻始終加載不成功...
    蘭山小亭閱讀 5,737評(píng)論 0 9
  • 加載靜態(tài)文件 在一個(gè)網(wǎng)頁中,不僅僅只有一個(gè)html骨架,還需要css樣式文件,js執(zhí)行文件以及一些圖片等。因此在D...
    yungege閱讀 122評(píng)論 1 0
  • 加載靜態(tài)文件 在一個(gè)網(wǎng)頁中,不僅僅只有一個(gè)html骨架,還需要css樣式文件,js執(zhí)行文件以及一些圖片等。因此在D...
    小短腿電工閱讀 1,293評(píng)論 0 1
  • 23 模板 在之前的章節(jié)中,視圖函數(shù)只是直接返回文本,而在實(shí)際生產(chǎn)環(huán)境中其實(shí)很少這樣用,因?yàn)閷?shí)際的頁面大多是帶有樣...
    大鵬_c5f9閱讀 461評(píng)論 0 0
  • 處理靜態(tài)文件,尤其是在開發(fā)時(shí),是一件很頭疼的事情。在這篇文章中,我們將會(huì)討論一些設(shè)置,目錄結(jié)構(gòu)和他們之間的相互影響...
    51reboot閱讀 1,780評(píng)論 0 1

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