首頁>技術>

在Django中靜態檔案的搜尋順序是:先搜尋settings中STATICFILES_DIRS配置的目錄,然後搜尋每個APP下的static目錄中的檔案。

搜尋順序的配置是由預設配置STATICFILES_FINDERS來實現的:STATICFILES_FINDERS:['django.contrib.staticfiles.finders.FileSystemFinder','django.contrib.staticfiles.finders.AppDirectoriesFinder',]

{% load static %}和{% load staticfile %}static和staticfile的區別是什麼我還沒搞清楚,在使用的時候碰到一種情況

之前一直是在根目錄建立了static目錄,然後配置STATICFILES_DIRS,所有的js、css、images都放在這一個目錄下。後來想根據每個APP分開儲存,就在每個APP下建立了static目錄,但是js檔案不能正常載入。查了好多文章後把{% load staticfile %}改成{% load static %},可以正常載入了。而且在django 2.1的官方文件中static-files看到的也是{% load static %}的方式。

在使用{% load static %}的過程中又發現了一個問題,在base.html檔案頭添加了{% load static %},但是通過{% extends "base.html" %}引入的html檔案中使用{% static "js/xxxx.js" %}還是會出現不能識別static的錯誤。然後在{% extends "base.html" %}下面加上{% load static %}就可以了。在網上查了以後,發現很多人都有這樣的疑問。最後又找到一種解決方式:

在settings檔案中TEMPLATES配置中增加

TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [os.path.join(BASE_DIR, 'templates')],        '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',            ],            # 在此處新增以後就不用在每一個html中去使用{% load static %}            'builtins': [                # 'django.contrib.staticfiles.templatetags.staticfiles',                'django.templatetags.static'            ],        },    },]

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 記一次神奇的SQL查詢經歷,group by慢查詢優化