Django - 使用Apache / Webfaction在生产中提供媒体/管理文件

时间:2014-04-16 07:07:38

标签: python django apache webfaction

现在,使用下面的配置可以毫无问题地提供我的STATIC文件。

在我的settings.py中:

MEDIA_ROOT = '/home/chronic88/webapps/media_media/'
MEDIA_URL = '/media/'

STATIC_ROOT = '/home/chronic88/webapps/static_media/'
STATIC_URL = '/static/'

static_mediamedia_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 个答案:

答案 0 :(得分:1)

如果您将Apache配置为从相应的根文件夹提供静态文件,则还必须运行manage.py collectstatic(请参阅docs)。

要测试静态和媒体文件,我通常在我的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}),
)