99V久久综合狠狠综合久久|久久se无码精品一区二区|99国产精美欧美一区二区|久久99国产精品亚洲

Django靜態(tài)文件加載

2020-03-30 17:46:07  閱讀:-  來(lái)源:

在Django中靜態(tài)文件的搜索順序是:先搜索settings中STATICFILES_DIRS配置的目錄,然后搜索每個(gè)APP下的static目錄中的文件。

搜索順序的配置是由默認(rèn)配置STATICFILES_FINDERS來(lái)實(shí)現(xiàn)的:
STATICFILES_FINDERS:
[
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

{% load static %}和{% load staticfile %}
static和staticfile的區(qū)別是什么我還沒(méi)搞清楚,在使用的時(shí)候碰到一種情況

之前一直是在根目錄創(chuàng)建了static目錄,然后配置STATICFILES_DIRS,所有的js、css、images都放在這一個(gè)目錄下。后來(lái)想根據(jù)每個(gè)APP分開(kāi)存儲(chǔ),就在每個(gè)APP下創(chuàng)建了static目錄,但是js文件不能正常加載。查了好多文章后把{% load staticfile %}改成{% load static %},可以正常加載了。而且在django 2.1的官方文檔中static-files看到的也是{% load static %}的方式。

在使用{% load static %}的過(guò)程中又發(fā)現(xiàn)了一個(gè)問(wèn)題,在base.html文件頭添加了{(lán)% load static %},但是通過(guò){% extends "base.html" %}引入的html文件中使用{% static "js/xxxx.js" %}還是會(huì)出現(xiàn)不能識(shí)別static的錯(cuò)誤。然后在{% extends "base.html" %}下面加上{% load static %}就可以了。在網(wǎng)上查了以后,發(fā)現(xiàn)很多人都有這樣的疑問(wèn)。最后又找到一種解決方式:

在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',            ],            # 在此處添加以后就不用在每一個(gè)html中去使用{% load static %}            'builtins': [                # 'django.contrib.staticfiles.templatetags.staticfiles',                'django.templatetags.static'            ],        },    },]


横山县| 龙里县| 额济纳旗| 北票市| 土默特左旗| 常熟市| 耿马| 旬阳县| 奉化市| 万山特区| 北辰区| 历史| 桃园市| 凤山县| 勐海县| 札达县| 玛沁县| 乃东县| 嘉祥县| 文昌市| 深圳市| 两当县| 荃湾区| 鄂伦春自治旗| 高唐县| 恩施市| 柳州市| 万安县| 泰来县| SHOW| 荣昌县| 永兴县| 乌海市| 娄底市| 西贡区| 郧西县| 大兴区| 盈江县| 喀什市| 文水县| 广昌县|