Обслуживание статических изображений в среде разработки - PullRequest
0 голосов
/ 01 марта 2012

Я получаю это сломанное изображение, когда пытаюсь обслужить его из корня носителя.Просьба к вам .. не показывать мне ссылки на документы или на предыдущие вопросы.Я пробовал эти вещи, но я все еще получаю это сломанное изображение.

Models.py:

class BasicModel(models.Model):
    name = models.CharField(max_length=200)
    dob = models.DateField()
    photo = models.ImageField(upload_to='sample')

class BasicModelForm(ModelForm):
    class Meta:
            model = BasicModel

Views.py:

def BasicView(request):
    if request.method == 'POST':
            form = BasicModelForm(request.POST, request.FILES)
            if form.is_valid():
                    data = form.save()
                    return preview(request, data.id)
    else:
            form = BasicModelForm()
    return render_to_response("unnamed.html", {'form': form}, context_instance=RequestContext(request))

def preview(request, id):
    obj = get_object_or_404(BasicModel, pk=id)
    return render_to_response("preview.html", {'obj': obj})

Настройки.py:

MEDIA_ROOT = '/home/nirmal/try/files/'
MEDIA_URL = 'http://localhost:8000/files/'

Urls.py:

url(r'^unnamed/$', 'unnamed.views.BasicView'),
url(r'^files/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),

Preview.html:

<html>
<body>
{{ obj.name }}
{{ obj.dob }}
<img src="{{ MEDIA_URL }}sample/{{ obj.photo }}" />
</body>
</html>

Может кто-нибудь помочь мне в этом?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Заменить:

{{ MEDIA_URL }}sample/{{ obj.photo }}

На:

{{ object.photo.url }}

В качестве примечания, вы уверены, что {{MEDIA_URL}} определен в шаблоне?

1 голос
/ 01 марта 2012

Я думаю, что нужно помнить, что представление ImageField возвращает URL относительно MEDIA_URL.Это означает, что вы должны использовать следующий код в вашем шаблоне:

<html>
<body>
{{ obj.name }}
{{ obj.dob }}
<img src="{{ MEDIA_URL }}{{ obj.photo }}" />
</body>
</html>

Или, что еще короче, использовать абсолютный путь URL с:

<html>
<body>
{{ obj.name }}
{{ obj.dob }}
<img src="{{ obj.photo.url }}" />
</body>
</html>

Подсказка, найдите URL сломанногоизображение в вашем браузере.Я думаю, это что-то вроде http://localhost:8000/files/sample/sample/xyz.png.

...