【发布时间】:2019-09-26 03:47:37
【问题描述】:
我的 django 应用程序托管在 pythonanywhere 上。我正在使用 weasyprint 生成一个 pdf,并且在我的 pdf 中显示了一个图像。错误日志中的错误是“无法在 /static/images/logo.png 加载图像”。当我尝试打开与 url 相同的路径时,它会在浏览器中显示图像。这意味着它的路径是正确的,但其他地方是错误的。
我的静态目录放置在应用程序之外。并且这个路径被添加到设置文件中。
我的文件夹结构:
my_app
static
|__ css
|__ images
|__ logo.png
|__ js
templates
|__ my_app
|__ pdf.html
settings.py:
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS =[
STATIC_DIR,
]
pdf.html:
{% load static %}
<td><img class="my_logo" src="{% static 'images/logo.png' %}" alt="Temporarily Unavailable"></td>
【问题讨论】:
-
试试“STATIC_URL = './static/'”
-
将 STATIC_DIR 重命名为 STATIC_ROOT。并将其从 STATICFILES_DIRS 中删除:STATICFILES_DIRS 是 source 文件夹列表,将在
collectstatic期间扫描以填充 destination 文件夹 - STATIC_ROOT。 -
@IvanStarostin 所以实际上 STATICFILES_DIRS 是正确的,因为它 是 源静态文件所在的位置。缺少的是项目外部的 STATIC_ROOT 目录并运行
manage.py collectstatic以将静态文件从项目存储库内的静态目录复制到提供它们的位置。 -
directory outside of the project好像OP没有这样的目录。 -
那么 OP 应该添加这样一个目录。你永远不应该在你的项目(源代码)目录中提供静态文件。您的整个项目目录应该只能由您的应用服务器 (WSGI) 访问,而不能由您的 Web 服务器访问。
标签: html django django-staticfiles pythonanywhere