2013-03-12 77 views
3

我試圖編寫一些代碼,用於檢查在調試模式下是否存在靜態文件,並且我無法使其工作。下面是我在控制檯已經試過:Django 1.4,當DEBUG = True時檢查是否存在靜態文件

>> from django.conf import settings 
>>> settings.DEBUG 
True 
>>> from django.contrib.staticfiles.storage import staticfiles_storage 
>>> staticfiles_storage.exists('img/vi_crumbs_bkg.gif') 
False 

此操作失敗,儘管vi_crumbs_bkg.gif存在於我的應用程序的靜態目錄。如果我將它符號鏈接到settings.STATIC_ROOT,它都可以按預期工作。

那麼,有什麼辦法可以在調試模式下讓staticfiles_storage.exists工作嗎?

(注:雖然我知道我可以只運行collectstatic得到這個工作正常,我討厭定期運行從我所有的應用程序收集所有的資產,同時,我積極開發)

謝謝提前 -

回答

4

我想我有一個解決方案。而不是使用staticfiles_storage.exists,我將依靠Django的靜態文件查找器爲我找到該文件。像這樣:

>>> from django.contrib.staticfiles import finders 
>>> finders.find('img/vi_crumbs_bkg.gif') 
u'/home/myuser/django_project/app_root/static/img/vi_crumbs_bkg.gif' 

這應該是最適合我的需求,因爲所有我需要做的是檢查一個文件在一個目錄中,而不是另一個 - 不管它在應用程序的根是或STATIC_ROOT的是無關緊要。

希望這可以幫助別人。