我正在制作一个简单的Django项目,但我无法在我的页面中显示任何图像。
https://docs.djangoproject.com/en/1.3/howto/static-files/#basic-usage州的Django文档
基本用法将静态文件放在staticfiles会找到的位置 它们。
默认情况下,这意味着您的应用的静态/子目录 INSTALLED_APPS。
您的项目可能还会包含与之无关的静态资产 特定的应用程序。 STATICFILES_DIRS设置是一个元组 加载静态文件时要检查的文件系统目录。它是 搜索路径默认为空。请参阅STATICFILES_DIRS文档 如何扩展此附加路径列表。
此外,请参阅STATICFILES_FINDERS的文档 设置有关静态文件如何查找文件的详细信息。
确保django.contrib.staticfiles包含在您的 INSTALLED_APPS。
对于本地开发,如果您使用的是runserver或添加 staticfiles_urlpatterns到你的URLconf,你完成了设置 - 您的静态文件将自动以默认状态提供(for 新创建的项目)/ 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”。
但我的浏览器拒绝显示图像。我做错了什么?
答案 0 :(得分:3)
您是否在文档中看到了这一部分:
如果{{ STATIC_URL }}
在模板中不起作用,则在渲染模板时可能没有使用RequestContext。
您是否还在视图中使用RequestContext来呈现模板?
答案 1 :(得分:0)
这是另一种方法:
settings.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" />