django - Heroku Django 应用程序静态文件未提供服务(错误 OSError : [Errno 2])

标签 django heroku django-staticfiles static-files

我使用 Django 使用 Python 开发了一个应用程序,并且刚刚将其部署在 heroku 服务器上。

我的settings.py 文件包含以下内容:

 PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
 STATIC_ROOT = 'staticfiles'
 STATIC_URL = '/static/'

 STATICFILES_DIRS = (
      os.path.join(PROJECT_PATH, 'static'),
 )


  STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #'django.contrib.staticfiles.finders.DefaultStorageFinder',
   )

当我运行此命令时:

heroku run python manage.py collectstatic --noinput

我收到以下错误:

  OSError: [Errno 2] No such file or directory: '/app/nameOfApp/static'

模板中之前存储的文件的 url,例如模板文件中具有此类 url 的 CSS 和 javascript 文件:

  <script type="text/javascript" src="{% static "javascripts/jquery.min.js" %}" ></script>

服务正常,但通过管理面板上传的新文件不会与静态文件夹中以前的文件存储在同一位置,即新上传的文件应与其他静态文件存储在同一文件夹中,例如CSS 和 JavaScript,

问题: 那么我应该如何修改settings.py文件才能正常工作呢?

最佳答案

媒体根是保存用户上传文件的目录的绝对文件系统路径。

Example: "/var/www/example.com/media/"

媒体 URL 用于处理从媒体根提供的媒体文件。

另一个重要的问题是您需要配置这些文件以便在开发和生产中提供服务

通过在 urls.py 中添加这一行即可实现技巧

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

关于django - Heroku Django 应用程序静态文件未提供服务(错误 OSError : [Errno 2]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25597061/

相关文章:

python - 为什么我的 Fastcomet Django 网站没有加载 css?

django - 在 Vue 3 中设置全局 Axios header

ruby-on-rails - Heroku 和 sendgrid - 现在如何将它们连接在一起?

django 我可以在评估的查询集上使用 prefetch_related 而无需重做初始查询吗

database - 什么是数据库缓存以及如何使用它?

ruby-on-rails - 在 Heroku 上使用 Active Storage 时 .webp 图像出错

Pythonanywhere 'staticfiles' 不是有效的标签库 : Template library staticfiles not found

django - apache服务器无法在Django项目中找到静态文件

django逆向动态id

django - Django 模板是否可以在不编写自定义标记/过滤器的情况下测试表中是否存在行?