我把图片(“hi.png”)和css文件放在/ home / user1 / djangoblog / blog / static
在模板中我有<img src="{{ STATIC_URL }}images/hi.png" />
我编辑了settings.py =&gt;
STATIC_ROOT = ''
STATIC_URL = "/static/"
STATICFILES_DIRS = (
"/home/user1/djangoblog/blog/static/",)
网页来源返回=&gt;
<div><img src="/static/images/a.jpg" /></div>
如果views.py =&gt;图像不会显示在网页上。
now = datetime.datetime.now()
#return render_to_response('current_datetime.html', {"foo": now}, context_instance=RequestContext(request))
t = loader.get_template('current_datetime.html')
c = Context({'foo': now})
return HttpResponse(t.render(c))
但是如果views.py =&gt;它在网页上显示图像。
return render_to_response('current_datetime.html', {"foo": now}, context_instance=RequestContext(request))
看起来这是HttpResponse或RequestContext的问题。如何使用HttpResponse或RequestContext修复此问题?
答案 0 :(得分:3)
您需要更仔细地阅读staticfiles文档。
使用STATIC_ROOT
指定静态目录的绝对路径,并通过浏览器STATIC_URL
指定可以访问目录的URL。您的主静态目录永远不会进入STATICFILES_DIRS
。该设置仅允许您指定在运行collectstatic
管理命令时应处理的其他目录。
通常,您从不使用您的实际静态目录。在开发中,Django提供来自每个应用程序的static
目录和STATICFILES_DIRS
中的任何目录(不包括主static
目录)的文件。在生产中,您运行collectstatic
管理命令,然后设置主Web服务器(Apache,Nginx等)以提供STATIC_ROOT
中的文件。 Django 从不提供主static
目录(STATIC_ROOT
)中的任何内容。
答案 1 :(得分:3)
我怀疑问题是你的设置文件中没有staticfiles上下文处理器。这就是/static/
未插入{{ STATIC_URL }}
的原因。
就像放
一样简单'django.core.context_processors.static',
进入settings.py文件中的上下文处理器列表(TEMPLATE_CONTEXT_PROCESSORS
。
我在TEMPLATE_CONTEXT_PROCESSORS中添加了这个,但仍然没有用。 - guru 3小时前
将'django.core.context_processors.static'
添加到上下文处理器列表中修复了您的问题,因为正如您现在所看到的那样,它会在STATIC_URL
处插入值{{1}在你的模板中。错误是您已将{{ STATIC_URL }}
的值更改为STATIC_URL
,可能是因为您对这里的一些答案感到困惑。
将"/home/user1/djangoblog/blog/static/"
的值更改为STATIC_URL
,以便该行显示为
'/static/'
这将解决您的问题。
Django模板只是将变量中的任何内容放入模板。他们不关心它是什么或它代表什么。如果STATIC_URL的值为STATIC_URL = '/static/'
,那么它会尽可能地/home/user1/djangoblog/blog/static/
插入/home/user1/djangoblog/blog/static/
,这就是您看到的原因
{{ STATIC_URL }}
每当呈现包含<img src="/home/user1/djangoblog/blog/static/images/a.jpg" />