2014-04-16 80 views
0

就像現在這樣,我的STATIC文件在使用下面的配置時沒有問題。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_mediamedia_media是由阿帕奇擔任兩個應用程序。

我可以通過管理員上傳文件,他們出現在文件夾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

如果您將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}), 
) 
+0

我一直持謹慎態度運行collectstatic的,因爲我不希望所有我的媒體/管理文件被傾倒入千萬我的STATIC文件夾,或者它裏面的文件夾結構被壓平。我會盡力的。 – AllTheTime

+0

'這會覆蓋現有的文件! 您確定要這樣做嗎?' 覆蓋STATIC中的現有文件正是我不想做的。我想我總是可以手動重新填充文件夾。但我不明白這將如何幫助我的媒體情況,因爲它似乎只是針對'/ home/USERNAME/webapps/static_media',而與'.../media_media'無關' – AllTheTime

+0

@AllTheTime啊。我很困惑它。那麼,對於MEDIA文件,你可以檢查以下幾點:如果你用'manage.py runserver'在本地運行它,文件是否可以訪問?如果是這樣的話:你的Apache配置是否指向正確的位置? – toabi