当前位置: 首页 > 知识库问答 >
问题:

Django collectstatics仅收集管理员静态文件

刘棋
2023-03-14

我有一个django应用程序运行在带有Nginx的docker容器中。使用my nginx,我的应用程序的所有静态文件(如css、js)都已成功找到。conf文件应按原样配置。但是找不到我的django/admin静态文件。

我找到了这个解决方案,并尝试了它所说的:

1) 在设置中设置静态URL和静态根目录。派克

2)在nginx conf中定义一个静态条目(带有尾随斜杠)。不需要第二个解决静态/admin/:

location /static/  {
    alias /path/to/static/; }

3) 使用collectstatic,它应该收集admin-

python manage.py collectstatic

当我这样做时,我的STATIC_ROOT会接收管理员静态文件,但不会接收我的应用程序静态文件。

我对docker卷没有问题。NGINX容器正在接收静态根内容。但我会分享我的爱。yml文件,因为您可能检测到它有错误。

“manage.py collectstatic”在我的cldj/Dockerfile中运行。

设置。py:

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

nginx。形态:

location /static/ {
    autoindex off;
    alias /static_files/;
}

docker-compose.yml:

version: '3'
volumes:
  static_files:

services:

  dj:
    build:
      context: .
      dockerfile: df/cldj/Dockerfile
    container_name: dj
    volumes:
      - ./proj:/proj
      - static_files:/proj/static_files
    ports:
      - 8000:8000
    command: gunicorn -w 4 proj.wsgi --bind 0.0.0.0:8000

  nx:
    build:
      context: .
      dockerfile: df/nx/Dockerfile
    container_name: nx
    volumes:
      - static_files:/static_files
    ports:
      - 80:80
      - 443:443
    depends_on:
      - dj

我已更改我的设置。py如下所述:

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

通过docker-comment build,应用容器将根据需要填充Collectstest。但是NGINX容器接收一个名为static_files的空文件夹。

我意识到,docker编写。yml在应用程序服务中包含以下行:

volumes:
  - ./proj:/proj
  - static_files:/proj/static_files

我把它改为指向静态文件夹(我的STATIC_ROOT):

volumes:
  - ./proj:/proj
  - static_files:/proj/static

但是这样一来,整个static/文件夹又被static/admin文件夹覆盖了(我的应用程序静态文件丢失了)

遵循Abhimanyu指令后,我需要使用$docker volume rm static_files删除旧的静态_文件。

现在它工作得很好。


共有1个答案

谢英光
2023-03-14

使用STATIC\u ROOT=os。路径加入(BASE_DIR,'static/'),然后运行

python manage.py collectstatic

它将在项目目录中创建一个名为static的文件夹。在那里你可以找到你所有的css和js文件

 类似资料:
  • 问题内容: 让我感谢Stack Overflow社区的人们帮助我解决了各种Django和Apache(带有mod_wsgi)错误。到目前为止,我已经问了5个相关的问题,现在我越来越接近在生产站点上发布内容了! 我读到有关,(很快就会过时),并在Apache配置中设置。我试图逐个测试每个解决方案,但是我什么也做不了。 这是我的管理网站现在的样子 我也有一个奇怪的情况,那就是 任何子 域都可以在我的服

  • django.contrib.staticfiles 从你的应用(和其他你指定的地方)收集所有静态文件到同一个地方,这样产品就能很容易的被维护 看看这里 对于静态文件的应用和一些用法示例的介绍,请参阅管理静态文件(CSS,图像) . 如果你想知道如何部署静态文件, 请参阅 部署静态文件. 设置 查看staticfiles settings了解更多设置细节 STATIC_ROOT STATIC_UR

  • 一、简介 添加和管理管理员。 二、功能演示 1.添加管理员 2,管理管理员 对不需要或过期的管理员进行编辑和删除操作。如下图所示:

  • 一、简介 角色定位了拥有此角色的所有管理员权限,管理员可以为不同的角色成员分配不同的权限配置。 二、功能演示 1.成员管理 对该角色下所有管理员进行管理 2.角色编辑 编辑和添加操作相同,不做详述。 3.口令卡 V9系统集成了口令卡功能,使用户信息更见保密。下面我们做详细介绍。如下图: 点击“申请口令卡”后会提示申请成功.如下图: 注:申请口令卡成功后,请一定妥善保管生成的图片;如丢失,您将不能登

  • 前面我们介绍了如何输出静态页面,但是我们的网页往往包含了很多的静态文件,包括图片、JS、CSS 等,刚才创建的应用里面就创建了如下目录: ├── static │ ├── css │ ├── img │ └── js beego 默认注册了 static 目录为静态处理的目录,注册样式:URL 前缀和映射的目录(在/main.go文件中beego.Run()之

  • 我有三个docker容器(postgresql、adminer和go/migrate),我向主机公开了adminer和postgres端口。我可以在浏览器中访问adminer,Postco也可以连接到DB。当我尝试从adminer内连接到db时,它会抛出以下错误: 迁移容器也会引发此错误: 因此,很明显,容器之间如何相互通信存在问题。我需要创建一个docker网络吗?