python - 无法在服务器上提供 Django 媒体文件?
问题描述
我正在使用 Django 版本 - 2.0.6。并在谷歌计算引擎 VM 实例上运行服务器。
我的 apache 文件未配置为以不同方式为生产基地和本地设置提供服务。当前设置从 base.py 和 local.py 运行。
我已经像这样配置了我的媒体和静态文件:
我的设置模块(base.py 和 local.py):
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), "static-root")
MEDIA_URL = '/media/'
MEDIA_DIR = os.path.join(BASE_DIR,'media')
MEDIA_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), "media-root")
我的 urls.py:
urlpatterns = [
....
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
当我尝试上传任何媒体文件时,它不会保存在“MEDIA_ROOT”位置,而是保存在“MEDIA_DIR”中。
如何在生产中服务 media_root 和 media_dir?(/var/www/venv)
静态文件可以正常工作。
层次结构:
/var/www/ ----->media-root
>static-root
>venv--->src--->manage.py
>media
>static
>other apps & settings
解决方案
推荐阅读
- java - 在不知道其类型的情况下基于另一个抽象类的子类创建一个抽象类的子类
- amazon-web-services - URL 响应为 9422 毫秒,超过阈值(8000 毫秒):unitrl
- php - Laravel - 如何删除数组中的项目不使用循环
- java - 更新响应对象而不转换为 java 对象
- ruby-on-rails - 根据 Rails 中的另一个表更新数量
- c# - 如何使用 C# 在文件中用单个逗号替换多个选项卡
- java - 喜欢和不喜欢 Firebase 的系统不工作
- python - 使用 pandas 函数合并 2 行
- java - 两个 Comparables 的最小/最大函数
- url - Nginx 混淆 $fastcgi_script_name 和 $fastcgi_path_info