无法在Django生产中加载静态文件

时间:2019-10-23 13:42:53

标签: python django django-staticfiles

我正在尝试使用DEBUG=False

运行该应用程序

下面是我的设置文件配置

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_URL = '/static/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, "static/")]

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')

运行python manage.py collectstatic之后,应用路径中的所有静态文件都将复制到staticfiles目录(在STATIC_ROOT路径中提到)。

加载网页时,静态文件加载失败。

错误消息:

  

获取 / static /dist/bootstrap-4.0.0-dist/js/bootstrap.min.14d449eb8876.js HTTP / 1.1“ 404 77

     

GET / 静态 /dist/bootstrap-select/js/bootstrap-select.min.31f649694651.js HTTP / 1.1“ 404 77

     

GET / 静态 /js/base.1332bbb46ac5.js HTTP / 1.1“ 404 77

     

GET / 静态 /crsummary/dist/amcharts4/core.ea1ec0eb6727.js HTTP / 1.1“ 404 77

查看错误消息,应用尝试从路径bootstrap.min.14d449eb8876.js加载/static/\*/\*,但实际文件位置为staticfiles/\*/\*

我不确定在这里错过了哪些配置。

2 个答案:

答案 0 :(得分:0)

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href=" {%static 'app1/css/freelancer.css' %}" />

像这样加载静态文件。

{% load static %}
<img class="img-fluid" src="{% static 'app1/img/portfolio/ai.png' %}" alt="">

像这样加载图像。

在此之前,需要指定基本目录和静态目录

STATIC_DIR=os.path.join(BASE_DIR,"static")

STATIC_URL = '/static/'
STATICFILES_DIRS=[STATIC_DIR,]

基本目录

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

像这样在项目内部构建路径:os.path.join(BASE_DIR,...)

答案 1 :(得分:0)

Django不允许在生产代码时加载静态文件,而不是使用AWS或任何其他在线内容交付网络

如果您真的不想从codes目录中加载静态文件,则需要安装whitenoise,并在您的中间件,staticfiles和installed_apps中对其进行定义

有关更多信息,您可以搜索Django中的使用和设置白噪声