【问题标题】:Media folder changes in production生产中的媒体文件夹更改
【发布时间】:2015-10-13 13:59:01
【问题描述】:

我正在开发一个 Django 网站,并且我有一个媒体文件夹,用户可以在其中上传一些内容。该文件夹位于我的根文件夹中,当我在本地运行服务器(使用 ./manage.py 运行服务器)时,它工作正常并将文件放入 MyApp/media/

问题是我有一个生产服务器 Apache,网站通过 mod_wsgi 运行。我的项目文件夹位于 /var/www/MyApp/ 中,它在 /var/www/media 而不是 /var/www/MyApp/media 中创建我的媒体文件夹。

在我的设置中我有

 STATIC_URL = 'static/'
 MEDIA_URL = 'media/'

我为上传的文件创建路径的方式是这样的:

 def generate_path(self, filename):
     url = "media/files/users/%s/%s" % (self.user.username, filename)
     return url

知道它在生产中改变了目录吗?

提前致谢

【问题讨论】:

  • 我想你把 /var/www/MyApp/media?并在我在本地时更改它?
  • 如何使用生成的路径?
  • Duplicate,第二次点击搜索“media folder django”

标签: python django apache mod-wsgi


【解决方案1】:

配置您的MEDIA_ROOT

# Project root is intended to be used when building paths,
# e.g. ``os.path.join(PROJECT_ROOT, 'relative/path')``.
PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__))

# Absolute path to the directory that will hold uploaded files.
#
# For more information on ``MEDIA_ROOT``, visit
# https://docs.djangoproject.com/en/1.8/ref/settings/#media-root
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'uploads/')

然后,使用upload_to 指定相对于您的MEDIA_ROOT 的路径。

【讨论】:

  • 确保使用绝对路径而不是相对路径。 IOW,如图所示,构建相对于项目根目录的路径很重要。这是因为 Apache 下的当前工作目录不会是你的项目目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 2016-04-15
相关资源
最近更新 更多