媒体文件未在 cpanel 上的 django 应用程序中提供
media files aren't serving in django app on cpanel
我在 cpanel 上有一个 django 应用 运行(我不确定这是否是我的问题
django 应用程序或 cpanel 服务器),当设置调试模式时 True
。我可以看到所有的媒体文件,例如个人资料图片或pdf文件等。但是当设置调试模式False
时,您无法在应用程序上看到媒体文件。这是我在 settings.py
文件上的配置。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = '/static/'
STATIC_ROOT = '<app-directory>/public_html/static'
# Media files
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
# Crispy Form Theme - Bootstrap 3
CRISPY_TEMPLATE_PACK = 'bootstrap3'
# For Bootstrap 3, change error alert to 'danger'
from django.contrib import messages
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
要部署生产服务器,您需要设置 3 个东西
- 停用 DEBUG 配置:
DEBUG = False
这将禁用所有额外的开发功能。
- 在设置文件中定义一个静态根目录:
STATIC_ROOT = '/this/is/a/path/to/statics'
这表明所有静态文件应保存在何处。
- 运行收集所有静态文件的命令:
python manage.py collectstatic
这会将所有静态文件保存在 STATIC_ROOT
配置的目录中
官方部署文档:
https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/#static-root-and-static-url
我还没有真正解决它,但您可以按照以下方法解决您的问题:
1 - 设置您的媒体和静态根目录:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
2 - 在 cpanel 上激活您的虚拟环境,然后 运行 此命令:
python manage.py collectstatic
3 - 完成后,将在 cpanel 上您的应用程序的根目录下创建 2 个文件夹
“静态”和“媒体”文件夹将它们都复制到“public_html”目录
4 - 转到 cpanel 中的设置 python 应用并找到您的应用并重新启动它。
它会解决我的问题,但每次我上传一些图片时,我应该去将媒体文件复制到 public_html
我已经遇到这个问题 1 天了,但我找到了解决方案。您可以使用 pip:
安装这两个包 dj-static static3
$ pip install dj-static static3
然后更改您的 wsgi.py 文件,如下所示:
.
.
.
from dj_static import Cling
.
.
.
application = Cling(get_wsgi_application())
我在 cpanel 上有一个 django 应用 运行(我不确定这是否是我的问题
django 应用程序或 cpanel 服务器),当设置调试模式时 True
。我可以看到所有的媒体文件,例如个人资料图片或pdf文件等。但是当设置调试模式False
时,您无法在应用程序上看到媒体文件。这是我在 settings.py
文件上的配置。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = '/static/'
STATIC_ROOT = '<app-directory>/public_html/static'
# Media files
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
# Crispy Form Theme - Bootstrap 3
CRISPY_TEMPLATE_PACK = 'bootstrap3'
# For Bootstrap 3, change error alert to 'danger'
from django.contrib import messages
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
要部署生产服务器,您需要设置 3 个东西
- 停用 DEBUG 配置:
DEBUG = False
这将禁用所有额外的开发功能。
- 在设置文件中定义一个静态根目录:
STATIC_ROOT = '/this/is/a/path/to/statics'
这表明所有静态文件应保存在何处。
- 运行收集所有静态文件的命令:
python manage.py collectstatic
这会将所有静态文件保存在 STATIC_ROOT
官方部署文档: https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/#static-root-and-static-url
我还没有真正解决它,但您可以按照以下方法解决您的问题:
1 - 设置您的媒体和静态根目录:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
2 - 在 cpanel 上激活您的虚拟环境,然后 运行 此命令:
python manage.py collectstatic
3 - 完成后,将在 cpanel 上您的应用程序的根目录下创建 2 个文件夹 “静态”和“媒体”文件夹将它们都复制到“public_html”目录
4 - 转到 cpanel 中的设置 python 应用并找到您的应用并重新启动它。
它会解决我的问题,但每次我上传一些图片时,我应该去将媒体文件复制到 public_html
我已经遇到这个问题 1 天了,但我找到了解决方案。您可以使用 pip:
安装这两个包 dj-static static3$ pip install dj-static static3
然后更改您的 wsgi.py 文件,如下所示:
.
.
.
from dj_static import Cling
.
.
.
application = Cling(get_wsgi_application())