Django - 在生产环境中用Apache/Webfaction服务媒体/管理文件
目前,我的静态文件可以正常显示,使用的是下面的配置。
在我的settings.py文件中:
MEDIA_ROOT = '/home/chronic88/webapps/media_media/'
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/chronic88/webapps/static_media/'
STATIC_URL = '/static/'
static_media
和media_media
都是通过apache提供服务的应用。
我可以通过管理后台上传文件,它们会出现在media_media
文件夹里,但在网页上却无法显示。当我查看网页源代码中的文件路径时,它们看起来是正确的,比如mydomain.com/media/image.png
,但是就是不显示。所以,链接是存在的,但似乎在apache和django之间的通信出现了问题,我找不到具体原因。
这是我在生产环境中使用的主要urls.py:
admin.autodiscover()
urlpatterns = patterns('',
url(r'^', include('polls.urls', namespace="polls")),
url(r'^admin/', include(admin.site.urls)),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是我在生产环境中使用的urls.py,运行得很好。我试过去掉最后一行,但结果还是一样(文件上传成功,但无法显示)。
我漏掉了什么呢?
1 个回答
1
如果你把Apache设置成从相应的根文件夹提供静态文件,那么你还需要运行 manage.py collectstatic
这个命令(具体可以查看文档)。
为了测试静态文件和媒体文件,我通常会在我的 urls.py 文件里加上这些内容:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
)