Django Image проблема неработающей ссылки в шаблоне - PullRequest
0 голосов
/ 16 февраля 2011

Все,

Я начал этот вопрос (/4846823/vklychit-faily-izobrazhenii-v-shablony-django-pokazyvaet-bituy-ssylku) с нескольких полезных ответов, но каким-то образом это все еще не решает мою проблему. Поэтому я пытаюсь опубликовать свой код, и, надеюсь, кто-то сможет сказать мнечто-то пошло не так ... Кажется, я что-то упустил, но не вижу, что:

в 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"/>

itпоказывает неработающее изображение ссылки, и если я щелкну правой кнопкой мыши, то увижу нужный источник, но по-прежнему не буду его отображать, ссылка:

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

расположение файла: C: \ Users \ Tijl\ Documents \ Programming \ Dashboard \ src \ DashboardDesign \ FigureOnWebSite \ templates \ images

Если я изменю Figure.html на;

{{picture}}

, он показывает laptop.txt on http://127.0.0.1:8000/Point3D/graphics/

Надеюсь, всего этого достаточно, чтобы кто-нибудь мне помог.

Большое спасибо! Tijl

1 Ответ

0 голосов
/ 17 февраля 2011

На этот вопрос легче ответить, чем на предыдущий вопрос.Но вы могли бы просто отредактировать свой старый вопрос.

Решение должно быть таким: изменить MEDIA_ROOT & 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}}" /> 

и возвращаемый URL-адрес не"правильный" URL, отсутствует статический / после http://127.0.0.1:8000/. Ваш правильныйURL должен быть:

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