无法获取要在Django(1.3)项目中显示的图像

无法获取要在Django(1.3)项目中显示的图像,django,django-templates,Django,Django Templates,我正在做一个简单的Django项目,但我无法在我的页面中显示任何图像 各国的Django文件 基本用法将静态文件放在静态文件可以找到的地方 他们 默认情况下,这意味着在应用程序的静态/子目录中 已安装的应用程序 您的项目可能也会有不受约束的静态资产 特定的应用程序。STATICFILES\u DIRS设置是 加载静态文件时要检查的文件系统目录。这是一个 搜索默认为空的路径。请参阅静态文件\u DIRS文档 如何扩展此附加路径列表 此外,请参阅STATICFILES\u Finder的文档 有关s

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

各国的Django文件

基本用法将静态文件放在静态文件可以找到的地方 他们

默认情况下,这意味着在应用程序的静态/子目录中 已安装的应用程序

您的项目可能也会有不受约束的静态资产 特定的应用程序。STATICFILES\u DIRS设置是 加载静态文件时要检查的文件系统目录。这是一个 搜索默认为空的路径。请参阅静态文件\u DIRS文档 如何扩展此附加路径列表

此外,请参阅STATICFILES\u Finder的文档 有关staticfiles如何查找文件的详细信息的设置

确保django.contrib.static文件包含在您的 已安装的应用程序

对于本地开发,如果您正在使用runserver或添加 静态文件\u URLconf的urlpatterns,安装完成—— 您的静态文件将自动以默认值提供(对于 新创建的项目)静态\ URL的/STATIC/

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

参见参考 有关更多详细信息,请参阅模板中的静态文件,包括备用文件 方法使用模板标记

所以我在settings.py中这样做:

STATICFILES_DIRS = (
    '/home/abc/django/project1/media/',
)
import os
PROJECT_DIR = os.path.dirname(__file__) + '/../'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'media/')
STATIC_URL = '/media/'
并启用了
'django.contrib.staticfiles',
在媒体中,我有一个文件夹img,其中包含各种jpg文件

在我的模板中,我有以下几行:

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

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

HTML页面似乎将此标记呈现为
where var=“abc”。
但是我的浏览器拒绝显示图像。我做错了什么?

您看到文档中的这部分了吗:

如果
{{STATIC\u URL}}
在模板中不起作用,则在呈现模板时可能没有使用RequestContext


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

您是否看到文档中的这一部分:

如果
{{STATIC\u URL}}
在模板中不起作用,则在呈现模板时可能没有使用RequestContext


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

以下是另一种方法:

settings.py:

STATICFILES_DIRS = (
    '/home/abc/django/project1/media/',
)
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%}
如果需要传递变量,请使用prefix方法:

{% load staticfiles %}
<img src="{% get_static_prefix %}img/{{var}}.jpg" />
{%load staticfiles%}

这里有一种替代方法:

settings.py:

STATICFILES_DIRS = (
    '/home/abc/django/project1/media/',
)
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%}
如果需要传递变量,请使用prefix方法:

{% load staticfiles %}
<img src="{% get_static_prefix %}img/{{var}}.jpg" />
{%load staticfiles%}

我确实尝试过,但也不起作用。My settings.py根本没有“TEMPLATE\u CONTEXT\u PROCESSORS”。手动添加它没有任何区别。但是使用“{%load static%}”“不显示图像。但我真的不明白为什么第一种方法不起作用。哦,好的。你能展示一下你的观点吗?默认情况下,模板\u上下文\u处理器不在settings.py中。当您添加django.core.context\u processors.static时,它也不起作用。您应该在设置中包含整个列表。py:TEMPLATE\u CONTEXT\u PROCESSORS=('django.core.context_processors.debug','django.core.context_processors.i18n','django.core.context_processors.media','django.core.context_processors.static','django.contrib.context_processors.auth','django.contrib.messages.context_processors.messages',)我确实尝试过,但也不起作用。我的settings.py根本没有“TEMPLATE\u CONTEXT\u PROCESSORS”。手动添加它没有任何区别。但是使用“{%load static%}”显示图像。但我不太明白为什么第一种方法不起作用。哦,好的。你能显示你的视图吗?默认情况下,模板上下文处理器不在settings.py中。当你添加django.core.CONTEXT\u PROCESSORS.static时,它也不起作用。你应该在设置中包含整个列表。py:TEMPLATE\u CONTEXT\u PROCESSORS=('django.core.context_processors.debug'、'django.core.context_processors.i18n'、'django.core.context_processors.media'、'django.core.context_processors.static'、'django.contrib.auth.context_processors.auth'、'django.contrib.messages.context_processors.messages')