我使用 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/