Проблемы с загрузкой/отображением изображений django PIL

Я пытаюсь заставить django показывать картинки. Я установил PIL, и он работает. я использую py 2.7, win 7, сервер разработки и sqlite3

мой статический корень:

STATIC_ROOT = r'H:/netz2/skateproject/static/'

У меня есть фоновое изображение в этой папке, и я могу получить к нему доступ через

http://127.0.0.1:8000/static/images/lomax.jpg

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

часть моей модели:

class Sk8(models.Model):
    name        = models.CharField(max_length=50, default='name of the model')
    bild1       = models.ImageField(upload_to="uploads/")

мой медиа корень:

MEDIA_ROOT = r'H:/netz2/skateproject/media/'

картинка попадает в нужную папку. netz/skateproject/media/pic.jpg

но похоже, что локальный хост не может получить доступ к этой папке. когда я пытаюсь - я получаю 404, и django говорит мне, что URL-адрес не соответствует ничему, что я определил в своих URL-адресах. это правда, но я также не определил URL-адрес фонового изображения в статической папке - и я могу получить к нему доступ просто отлично.

Я также пытался получить доступ к файлу из моего html-шаблона, например:

{% extends "grundgerüst.html" %}
{% block inhalt %}
    <div id='skatelist'>
        {% for sk8 in skates %}
        <p><a href="/skates/{{sk8.slug}}/">{{sk8}}</a></p>
        <p><img src="{{sk8.bild.url}}"/></p>
        {% endfor %}
    </div>
{% endblock %}

очевидно, что изображение не отображается.

Я не знаю, что здесь не так. Я думаю, я должен увидеть картинку на локальном хосте? Вот фото ошибки, которую выдает хром

введите здесь описание изображения

если, например, на картинке папки отличаются от папок в примере кода, это потому, что я изменил их, проверяя разные настройки.

Я очень надеюсь, что кто-нибудь поможет мне разобраться с image_field, потому что загрузка изображений, если я не могу их отобразить, не имеет особого смысла :)

заранее спасибо!!! Даниэль

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


person Daniel Prell    schedule 07.01.2013    source источник


Ответы (1)


Приложение Django contrib.staticfiles автоматически исправит ваши URL-адреса для обслуживания статических файлов в режиме DEBUG [ref]. К сожалению, этого нельзя сказать о медиафайлах.

Добавьте следующий фрагмент в свой проект urls.py для отображения мультимедиа.

django.conf import settings

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

Справочник по документам

person Thomas    schedule 07.01.2013
comment
Потрясающий! это было! идеальный ответ, спасибо! если у кого-то еще есть эта проблема, не забудьте включить: из настроек импорта django.conf в свои URL-адреса, иначе вы сначала получите сообщение об ошибке. если вам нужно лучше понять это, проверьте ссылку на документацию django, опубликованную Томасом. спасибо Томас - спас мой день! - person Daniel Prell; 07.01.2013