在Django视图中找不到静态文件
Django 1.5.4上的开发服务器中的静态文件有问题。我不确定在实际的生产服务器(运行Apache)上是否存在同样的问题,因为我找到了一个目前有效的解决方案(只需硬编码完整的URL-我知道这很糟糕,但它完成了任务) 我正在使用Reportlab为我的项目创建一个PDF文件,我需要在其中包含一张图片。我用另一种方式回答: 不幸的是,我从服务器上得到的答案是一个IO错误:“无法打开资源”localhost:8000/static/images/x.jpg“,即使复制并粘贴到URL栏中清楚地显示图片就在那里 我关于静态文件的设置如下所示,它们适用于所有其他内容(CSS、Javascript等):在Django视图中找不到静态文件,django,static,views,django-settings,Django,Static,Views,Django Settings,Django 1.5.4上的开发服务器中的静态文件有问题。我不确定在实际的生产服务器(运行Apache)上是否存在同样的问题,因为我找到了一个目前有效的解决方案(只需硬编码完整的URL-我知道这很糟糕,但它完成了任务) 我正在使用Reportlab为我的项目创建一个PDF文件,我需要在其中包含一张图片。我用另一种方式回答: 不幸的是,我从服务器上得到的答案是一个IO错误:“无法打开资源”localhost:8000/static/images/x.jpg“,即使复制并粘贴到URL栏中清楚地显示图
谢谢你的帮助 确保
django.contrib.staticfiles
包含在您的安装的应用程序中
通常有两种方法来存储静态文件
一种方法是在应用程序文件夹中创建一个静态文件夹,并将文件存储在那里。您可以检查:
是创建一个文件夹并存储不适用于任何特定应用程序的静态文件
从:
您的项目可能还具有与特定应用程序无关的静态资产。除了在应用程序中使用静态/目录外,您还可以在设置文件中定义目录列表(STATICFILES\u DIRS),Django也会在其中查找静态文件
例如:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
)
如果您正在投入生产,请查看更多详细信息 正如我所说的,它可以与所有其他静态文件(CSS、Javascript等)完美配合。它们都位于主应用程序的静态文件夹(js/CSS子文件夹)中,没有任何问题。除非我指定确切的地址,否则不会加载此图像。那一定是出了什么事。
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',
)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
)