Django图像在模板中发生故障链接

时间:2011-02-16 20:47:05

标签: django image templates jpeg

所有

我已经开始提出这个问题(http://stackoverflow.com/questions/5016864/include-image-files-in-django-templates-shows-broken-link),其中有几个有用的anserws,但不知怎的,这仍然没有解决我的麻烦。 因此,我尝试发布我的代码,希望有人能够告诉我什么出错了.. 我似乎错过了一些但却看不到的东西:

在settings.py中

MEDIA_ROOT = 'C:/Users/Tijl/Documents/Programming/Dashboard/src/DashboardDesign/FigureOnWebSite/templates/images/static'

MEDIA_URL = 'http://localhost:8000/static/'

在urls.py中:

(r'^Point3D/graphics/$', 'FigureOnWebSite.views.graphics'),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
                     {'document_root': settings.MEDIA_ROOT}),
在views.py中

> def graphics(request):
>     laptop = "laptop.jpg"
>     t = loader.get_template('FigureOnWebSite/templates/Figure.html')
>     c = Context({'picture': laptop})
>     return HttpResponse(t.render(c))

在我的Figure.htm中;

<img src"{{picture}}" alt = "picture"/>

它显示了一个损坏的链接图像,如果我右键单击我可以看到正确的来源,但仍然没有显示它链接是:

http://127.0.0.1:8000/Point3D/graphics/

文件的位置在: C:\ Users \用户Tijl \文件\编程\控制板\ SRC \ DashboardDesign \ FigureOnWebSite \模板\图像

如果我将Figure.html更改为;

{{picture}}

它在http://127.0.0.1:8000/Point3D/graphics/

上显示 laptop.txt

希望上述内容足以帮助我。

非常感谢! Tijl

1 个答案:

答案 0 :(得分:0)

这比以前的问题更容易回答。但你可能刚刚编辑过你的旧问题。

解决方案应该是:更改您的MEDIA_ROOT&amp; MEDIA_URL到

MEDIA_ROOT='C:/Users/Tijl/Documents/Programming/Dashboard/src/DashboardDesign/FigureOnWebSite/templates/images/'
MEDIA_URL='static/'

将您的views.py更改为:

from django.http import RequestContext
from django.shortcuts import render_to_response
def graphics(request):
  laptop = "laptop.jpg"
  c = {'picture': laptop}
  return render_to_response('FigureOnWebSite/templates/Figure.html',c,RequestContext(request))

和你的figure.html:

<img src="{{MEDIA_URL}}{{picture}}" />  

注意:如果您在模型中使用ImageFileField,这对您来说将更容易。你可以写:

<img src="{{picture.url}}" /> 

并且您返回的网址是“正确”的网址,它在http://127.0.0.1:8000/之后缺少静态/。您的正确网址必须是:

http://127.0.0.1:8000/static/laptop.jpg