2011-04-21 113 views
0

我有一个名为mysite的新django项目。 mysite内部是一个名为static的文件夹,我的所有图像都在这里。链接Django中的图像

mysite的内部也有名为index.html具有以下基本代码文件模板文件夹:

<html> 
<head></head> 
<body><img src = WHAT GOES HERE?? /> 
</html> 

我有我的mysite文件夹这个views.py文件:

from django.shortcuts import render_to_response 
def index(request): 
    return render_to_response('index.html',) 

在我的settings.py文件中,STATIC_URL ='/ static /'

什么是应该在我的img标签中正确引用静态图像文件的确切文本(注意:我没看链接到文档)。我是否需要更改任何文件夹/设置结构?谢谢。

我已经添加了以下标签:
< IMG SRC = “{{STATIC_URL}} logo.jpg”/>

但是,它仍然不会加载 - 这似乎是要正确路径(浏览器中的图像路径为127.0.0.1:8000/static/logo.jpg)。我需要更改什么才能正确加载?我已经检查过以确保图像位于该位置。

UPDATE:这是怎么了,我终于得到它的工作:

if settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root':  sttings.MEDIA_ROOT}), 
) 

(我使用的static_url的MEDIA_URL代替)。有没有更简单的方法来做到这一点?

回答

0

David542,

你的结构应该如下所示。

MyProject 
    \MySite 
     \static 

当您使用runserver时,将为此静态文件夹提供服务。当您将工作转移到生产环境中时,您会想要使用django的./manage.py collectstatic,并确保在您settings.py文件中指定的静态url上提供静态媒体。因此,如果您的静态文件夹中有图像,则应该可以参考/static/some_image.png

静态文件在版本1.3之前并未包含在Django中。如果您的年龄大于1.3,可以解释您目前的设置不适合您的原因。 (我猜这是你的问题。)

希望这会有所帮助。

编辑:如果通过输入你的路径服务都为你和你舒适的工作,你应该确实使用其他答案说,并使用{{ STATIC_URL }}hi.jpg就好像你选择改变你的静态url,你将不必改变你的模板以匹配,因为他们会自动工作。

+0

@ wilbbe01我的Django版本是... >>> django.VERSION (1,3,0,'final',0) – David542 2011-04-21 01:27:34

+0

您是否使用内置的'manage.py runserver'? – wilbbe01 2011-04-21 01:28:33

+0

你的形象有什么权限? – wilbbe01 2011-04-21 01:29:26

0

如果图像被称为 “hi.jpg”,它应该是这样的:

IMG SRC = “{{STATIC_URL}} hi.jpg

这将解决到一个文件上传到STATIC_URL目录,在你的榜样,这将是:

/static/hi.jpg

+0

我已添加以下标签:。但是,它仍然无法加载 - 它似乎正在进入正确的路径(浏览器中的图像路径显示为http://127.0.0.1:8000/static/logo.jpg)。我需要更改什么才能正确加载?我已经检查过以确保图像位于该位置。 – David542 2011-04-21 01:08:34

+0

我不确定什么“不加载”的意思,具体而言。一个好的测试是,在服务器运行时,直接转到url,在这种情况下是“http://127.0.0.1:8000/static/logo.jpg”。你看到图像了吗?如果你不这样做,你还没有正确设置静态托管。 – mattv 2011-04-21 21:33:47