0

我正在制作一个简单的 Django 项目,但我无法在我的页面中显示任何图像。

Django 文档位于https://docs.djangoproject.com/en/1.3/howto/static-files/#basic-usage状态

基本用法 把你的静态文件放在静态文件能找到它们的地方。

默认情况下,这意味着在您的 INSTALLED_APPS 中的应用程序的静态/子目录中。

您的项目可能还会包含未绑定到特定应用程序的静态资产。STATICFILES_DIRS 设置是文件系统目录的元组,用于在加载静态文件时检查。这是一个默认为空的搜索路径。请参阅 STATICFILES_DIRS 文档如何扩展此附加路径列表。

此外,有关 staticfiles 如何查找文件的详细信息,请参阅 STATICFILES_FINDERS 设置的文档。

确保 django.contrib.staticfiles 包含在您的 INSTALLED_APPS 中。

对于本地开发,如果您正在使用 runserver 或将 staticfiles_urlpatterns 添加到您的 URLconf,则您已完成设置 - 您的静态文件将自动以 /static/ 的默认(对于新创建的项目)STATIC_URL 提供。

您可能需要在模板中引用这些文件。最简单的方法是使用包含的上下文处理器,它允许模板代码如下:

有关更多详细信息,请参阅在模板中引用静态文件,包括使用模板标签的替代方法。

所以我在settings.py中做了这个:

STATICFILES_DIRS = (
    '/home/abc/django/project1/media/',
)

并启用'django.contrib.staticfiles', 在媒体中,我有一个文件夹 img,其中包含各种 jpg 文件。

在我的模板中,我将其作为其中一行:

<img src="{{STATIC_URL}}img/{{var}}.jpg">

当我通过我的视图将 var 传递给这个模板时。

HTML 页面似乎将此标记呈现为"<img src="img/abc.jpg">var="abc"。但是我的浏览器拒绝显示图像。我做错了什么?

4

2 回答 2

3

您是否在文档中看到了这部分:

如果{{ STATIC_URL }}在您的模板中不起作用,则您可能在呈现模板时没有使用 RequestContext。

您是否还在视图中使用 RequestContext 来呈现模板?

于 2012-07-01T14:27:35.550 回答
0

这是另一种方法:

设置.py:

import os
PROJECT_DIR = os.path.dirname(__file__) + '/../'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'media/')
STATIC_URL = '/media/'

在您的模板中:

{% load staticfiles %}
<img src="{% static img/foo.jpg %}" />

如果需要传递变量,请使用前缀方法:

{% load staticfiles %}
<img src="{% get_static_prefix %}img/{{var}}.jpg" />
于 2012-07-01T14:33:58.223 回答