加載靜態(tài)文件
在一個網(wǎng)頁中,不僅僅只有一個html骨架,還需要css樣式文件,js執(zhí)行文件以及一些圖片等。因此在DTL中加載靜態(tài)文件是一個必須要解決的問題。在DTL中,使用static標(biāo)簽來加載靜態(tài)文件。要使用static標(biāo)簽,首先需要{% load static %}。加載靜態(tài)文件的步驟如下:
首先確保
django.contrib.staticfiles已經(jīng)添加到settings.INSTALLED_APPS中。確保在
settings.py中設(shè)置了STATIC_URL。在已經(jīng)安裝了的
app下創(chuàng)建一個文件夾叫做static,然后再在這個static文件夾下創(chuàng)建一個當(dāng)前app的名字的文件夾,再把靜態(tài)文件放到這個文件夾下。例如你的app叫做book,有一個靜態(tài)文件叫做zhiliao.jpg,那么路徑為book/static/book/zhiliao.jpg。(為什么在app下創(chuàng)建一個static文件夾,還需要在這個static下創(chuàng)建一個同app名字的文件夾呢?原因是如果直接把靜態(tài)文件放在static文件夾下,那么在模版加載靜態(tài)文件的時候就是使用zhiliao.jpg,如果在多個app之間有同名的靜態(tài)文件,這時候可能就會產(chǎn)生混淆。而在static文件夾下加了一個同名app文件夾,在模版中加載的時候就是使用app/zhiliao.jpg,這樣就可以避免產(chǎn)生混淆。)-
如果有一些靜態(tài)文件是不和任何
app掛鉤的。那么可以在settings.py中添加STATICFILES_DIRS,以后DTL就會在這個列表的路徑中查找靜態(tài)文件。比如可以設(shè)置為:STATICFILES_DIRS = [ os.path.join(BASE_DIR,"static") ] 在模版中使用
load標(biāo)簽加載static標(biāo)簽。比如要加載在項目的static文件夾下的style.css的文件。那么示例代碼如下:
{% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}">
如果不想每次在模版中加載靜態(tài)文件都使用
load加載static標(biāo)簽,那么可以在settings.py中的TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static'],這樣以后在模版中就可以直接使用static標(biāo)簽,而不用手動的load了。-
如果沒有在
settings.INSTALLED_APPS中添加django.contrib.staticfiles。那么我們就需要手動的將請求靜態(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.STATIC_ROOT)