Django在DEBUG设为True和False的情况下读取的路径和方式有所区别。下面是我的例子,希望有帮助。
第一步:
在Settings.py的STATIC_URL = '/static/'后加入如下代码。
STATIC_URL = '/static/'
if DEBUG == False:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
else:
STATICFILES_DIRS = [
os.path.join(BASE_DIR,"static")
]
由于当DEBUG为False的时候Django读取的STATIC_ROOT的值,而为True的时候读取的是STATICFILES_DIRS的值,所以在这里做一个判断。
第二步:
在URLS.py下添加如下代码:
from django.views import static ##新增
from django.conf import settings ##新增
from django.conf.urls import url ##新增
urlpatterns = [
path('admin/', admin.site.urls),
## 以下是新增
url(r'^static/(?P<path>.*)$', static.serve,
{'document_root': settings.STATIC_ROOT}, name='static'),
]
第三部:
把static文件放入manger.py同级别的目录中,如下图:
第四步:
在HTML中通过 {% load static %}先加载static,之后就能应用static文件了。
<!DOCTYPE html>
<!-- 载入静态文件 -->
{% load static %}
<!-- 网站主语言 -->
<html lang="zh-cn">
<head>
<!-- 网站采用的字符编码 -->
<meta charset="utf-8">
<!-- 设定网页视区 -->
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- 预留网站标题的位置 -->
<title>{% block title %}{% endblock %}</title>
<!-- 引入bootstrap的CCS文件 -->
<link rel="stylesheet" href="/static/plugins/bootstrap-3.4.1/css/bootstrap.css">
</head>
以上步骤就是无论debug是否为false都能读取到静态文件,并且加载到html中。