2017-06-14 69 views
1

我目前有两种类型的文件都静态文件和媒体files.The静态文件包含我的CSS,JS和其它静态内容。媒体文件包含用户上传的内容。静态文件夹紧邻媒体文件夹。现在位于已部署的计算机上。如果我设置了DEBUG = False,我的静态文件显示得很好,但是我的媒体内容从不显示。我收到一个404 not found错误。 我的问题是如何在DEBUG = False时在生产环境中显示媒体内容。用DEBUG =真的一切似乎工作正常?我阅读了以下page并尝试了这些东西。与调试=生产假不显示Django的媒体文件 - Django的1.10

1 - 尝试创建静态媒体就像静态内容的单独文件夹。 目前我的静态内容由collectstatic命令管理。我使用webfaction.I阿帕奇有一个静态的文件夹,名为static_content当我跑./manage.py collectstatic我所有的静态文件夹中的内容被复制到static_content folder.I尝试创建另一个叫static_media静态文件夹。但是,当我运行./manage.py collectstatic时,我的media文件夹的内容被复制到static_content而不是static_media,因为它应该有。谁能告诉我为什么collectstatic命令不会将内容粘贴到static_media

这是我的配置看起来像

ALLOWED_HOSTS = [ 
    "*", 
    'mywebsite.com', 
    'www.mywebsite.com.com', 
] 


STATIC_URL = 'http://mywebsite.com.com/static/' 
STATIC_ROOT = '/home/admin/webapps/static_content' 
STATICFILES_DIRS = (
         '/home/admin/webapps/mainfolder/mainapp/static', 
         '/home/admin/webapps/mainfolder/mainapp/media', 
        ) 
PROJECT_PATH = os.path.join(BASE_DIR, 'static') 

MEDIA_URL = 'http://mywebsite.com.com/media/' 
MEDIA_ROOT = '/home/admin/webapps/static_media' 

这就好比

admin.autodiscover() 
urlpatterns = [ 
.... 
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

我在用正确的方法创造只是管理我的媒体内容的单独的文件夹就是我urls.py外观像DEBUG = False时的静态内容一样?如果是这样,那么为什么collectstatic命令会将我的所有媒体内容转储到我的static_content文件夹而不是static_media文件夹中?另外,如果我使用静态文件夹来管理我的媒体内容,当用户上传数据将被上传到mediastatic_media

+0

注意你不需要'admin.autodiscover()'在Django 1.7+ – Alasdair

+0

感谢您指出了这一点。看起来像我是戈尔戈提到我使用的Django版本。我刚刚添加了它。 – MistyD

回答

3

你不应该为你的媒体目录使用collectstatic。从STATICFILES_DIRS删除'/home/admin/webapps/mainfolder/mainapp/media',然后设置

MEDIA_ROOT = '/home/admin/webapps/mainfolder/mainapp/media' 

一旦你做到了这一点,在static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)应该当DEBUG = True服务的媒体文件。

对于DEBUG = False,你必须configure Apache服务于媒体文件。

+0

我已经有了DEBUG = True的媒体文件。我想我必须配置Apache。 – MistyD

+0

听起来不像是在你的问题 - “如果我设置DEBUG = True我的静态文件呈现很好,但我的媒体内容永远不会显示” – Alasdair

+0

啊感谢捕捉。我只是修复它。我试图弄清楚如何配置httd.conf我无法在我的部署服务器中找到apache2,conf – MistyD