一尘不染

适用于网络静态文件的Docker Django 404,但适用于管理静态文件的Docker

docker

请帮助我在此docker django配置中提供静态文件。

Django正在进行的项目在Docker交付时遇到了一些问题static files

管理员视图的 所有静态文件都可以正常加载,但是客户端Web视图的静态文件则抛出404 Not found错误。

这是我的 docker.yml 配置详细信息:

web:
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - ./web:/usr/src/app
  ports:
    - "8000:8000"
  env_file: .env
  command: python manage.py runserver 0.0.0.0:8000

postgres:
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  ports:
    - "5432:5432"

更新

这是管理员静态文件url的样子: http
//developer.com :
8000/
static/admin/css/
base.css
,这是客户端静态文件url的样子: http :
//developer.com : 8000
/static/css/base.css

静态目录中的admin文件夹是通过运行django命令创建的collectstatic

我以前使用过此设置,并且工作正常。但是,当我将项目根文件夹移动到另一个目录时,似乎会出现此问题。

我完全被困在这里,非常感谢您的所有帮助和反馈。


阅读 340

收藏
2020-06-17

共1个答案

一尘不染

这是文件中的 STATICFILES_DIRS 配置问题 settings.py

此设置定义了在启用 FileSystemFinder*
Finder(例如,如果您使用collectstatic或findstatic管理命令或使用静态文件服务视图)的情况下 staticfiles
应用将遍历的其他位置。
*

以下是我的settings.py中的配置:

STATIC_URL = '/static/'
STATIC_ROOT      =  os.path.join(BASE_DIR, "static")

现在,我将此代码更新为:

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

而且每个文件都可以正常加载。

参考链接

2020-06-17