我在Django 1.5.4上的开发服务器中遇到静态文件的问题。我不确定在实际的生产服务器(运行Apache)上是否存在相同的问题,因为我找到了一个解决方案,目前正在运行(只需对完整的URL进行硬编码 - 我知道这很糟糕,但它得到了工作完成)。
我正在使用Reportlab为我的项目创建一个PDF文件,我需要在其中包含一张图片。我在另一个post中跟进了答案:
from django.templatetags.static import static
url = static('x.jpg')
不幸的是,我从服务器得到的答案是IO错误:'无法打开资源“localhost:8000 / static / images / x.jpg”',即使将其复制并粘贴到URL栏中也能清楚地显示我认为照片就在那里。
我对静态文件的设置如下,它们适用于其他所有内容(CSS,Javascript等):
ROOT_PROJECT = os.path.join(os.path.split(__file__)[0], "..")
STATIC_ROOT = os.path.join(ROOT_PROJECT, 'static')
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
感谢您的帮助!
答案 0 :(得分:1)
确保django.contrib.staticfiles
中包含INSTALLED_APPS
。
通常有两种方法可以存储静态文件。
您的项目可能还会包含与特定应用无关的静态资产。除了在应用程序中使用静态/目录外,您还可以在 settings 文件中定义目录列表(STATICFILES_DIRS),Django也会在其中查找静态文件。
例如:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
)
如果您正在投入生产,请查看production deployment了解更多详情!