链接Django中的图像

时间:2011-04-21 00:37:38

标签: django

我有一个名为mysite的新django项目。 mysite内部是一个名为static的文件夹,我的所有图像都是。

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标签内应该准确引用静态图像文件的确切文本是什么(注意:我不是在寻找文档的链接)。我是否需要更改任何文件夹/设置结构?谢谢。

我添加了以下标记:
        &LT; img src =“{{STATIC_URL}} logo.jpg”/&gt;

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

更新:这就是我最终让它发挥作用的方式:

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

(我正在使用media_url而不是static_url)。有更简单的方法吗?

4 个答案:

答案 0 :(得分:0)

如果图像被称为“hi.jpg”,它将如下所示:

img src =“ {{STATIC_URL}} hi.jpg

这将解析为上传到STATIC_URL目录的文件,在您的示例中将是:

/static/hi.jpg

答案 1 :(得分:0)

David542,

您的结构应该如下所示。

MyProject
    \MySite
        \static

使用runserver时将提供此静态文件夹。当您将工作转移到生产环境中时,您可能希望使用django的./manage.py collectstatic,并确保在settings.py文件中指定的静态URL上提供静态媒体。因此,如果静态文件夹中有图像,则可以通过说/static/some_image.png

来引用

在版本1.3之前,Django不包含Staticfiles。如果您的年龄超过1.3,则可以解释为什么您当前的设置不适合您。 (我猜这是你的问题。)

希望这有帮助。

编辑:如果通过输入你的路径来完成服务对你来说很舒服你应该确实使用另一个答案所说的并使用{{ STATIC_URL }}hi.jpg,就好像你选择更改你的静态网址一样你不需要更改模板以匹配,因为它们将自动运行。

答案 2 :(得分:0)

首先,read the documentation on serving static files,当您觉得您理解在本地和生产中提供静态文件背后的概念时,read the docs once more

然后确保您已将django.contrib.staticfiles添加到INSTALLED_APPS

答案 3 :(得分:0)

如果图像被称为“pic.jpg”,那就是

img src = "{{'static/pic.jpg'}}"

这对我有用......也检查一下 django.contrib.staticfiles,在settings.py中的installed_apps