2013-03-12 82 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的是无关紧要。

希望这可以帮助别人。