【问题标题】:Django: Staticfiles are creating but django failed to find staticfiles and look inside static folderDjango:正在创建静态文件,但 django 找不到静态文件并查看静态文件夹
【发布时间】:2020-06-14 18:17:14
【问题描述】:

它工作正常,但由于某种原因,我必须更改静态文件代码,然后出现问题。

settings.py

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

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

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

静态文件正在创建我所有的 css 文件都在静态文件中获取副本,浏览器也获取静态文件名称 <link rel="stylesheet" href="/static/style.2f83ab2e5052.css">

但它没有在 static_root(staticfiles) 中搜索它们,它仍然在静态 python manage.py findstatic --verbosity 2 styles.css 中搜索它们,但它返回 C:\Users\HP\Desktop\vir1\blackportfolio\blackportfolio/static C:\Users\HP\Desktop\vir1\venv\lib\site-packages\django\contrib\admin\static

我输入的命令。

manage.py collectstatic --clear
manage.py runserver --insecure.

项目结构。

C:.
├───blackportfolio
│   ├───static
│   │   ├───admin
│   │   │   ├───css
│   │   │   │   └───vendor
│   │   │   │       └───select2
│   │   │   ├───fonts
│   │   │   ├───img
│   │   │   │   └───gis
│   │   │   └───js
│   │   │       ├───admin
│   │   │       └───vendor
│   │   │           ├───jquery
│   │   │           ├───select2
│   │   │           │   └───i18n
│   │   │           └───xregexp
│   │   └───images
│   └───__pycache__
├───portfolio
│   ├───migrations
│   │   └───__pycache__
│   └───__pycache__
├───staticfiles
│   ├───admin
│   │   ├───css
│   │   │   └───vendor
│   │   │       └───select2
│   │   ├───fonts
│   │   ├───img
│   │   │   └───gis
│   │   └───js
│   │       ├───admin
│   │       └───vendor
│   │           ├───jquery
│   │           ├───select2
│   │           │   └───i18n
│   │           └───xregexp
│   └───images
└───templates

【问题讨论】:

  • 设置绝对路径 STATIC_ROOT = "C:\blackportfolio\static"
  • 它可以在开发环境中工作,但不能在生产环境中使用。

标签: django


【解决方案1】:

请更具体。你根本没有在你的问题中提到“prod”。请注意,browserfindstatic 没有任何共同之处。 findstatic 将文件从STATICFILES_DIRS(不仅)收集到STATIC_ROOT。 “浏览器”通过STATIC_URL 引用静态文件(呈现的HTML 中的hrefs 是基于此选项生成的)。

DEBUG=true - Django 执行映射工作并将以STATIC_URL 开头的URL 映射到STATIC_ROOT 文件夹。在 prod 上,当 DEBUG=false 时,Django 不做这项工作 - 网络服务器必须这样做。

因此,将您的 Nginx(或其他 Web 服务器)配置为类似

location /static/ /* STATIC_URL */
{
    alias C:\Users\HP\Desktop\vir1\blackportfolio\staticfiles; /* STATIC_ROOT */
}

在 prod 上部署静态文件提到了 in the docs 并且一直是 discussed many times on SO

【讨论】:

  • STATICFILES_DIRS 文件正在复制到 STATIC_ROOT 但它仍在静态文件夹中搜索静态文件,在生产中它失败了。
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2016-04-01
  • 2021-08-27
  • 2014-11-10
相关资源
最近更新 更多