2012-05-15 2 views
1

Я читал другие вопросы об изображениях, но я до сих пор не может решить мою проблему: (Это, вероятно, что-то основное, как я новичок в ДжангоDjango шаблоны - не отображать динамические изображения

поэтому у меня есть модель Пример:

class Example(models.Model): 
    image = models.ImageField(upload_to = "examples/") 

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

<p>Image: <img src="{{ example.image.url }}"/></p> 

Я изменил мой settings.py :

MEDIA_ROOT = '/home/nicpon/Dokumenty/aplikacje/images/' 
MEDIA_URL = '/images/' 

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

теперь я изменился также urls.py: `

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

, но это привело к ошибке: «Объект« списка »не имеет атрибута« разрешить »на каждой странице.

Edit: , когда я ставлю {{}} example.image.url вне IMG тега он показывает /images/exapmles/specific_image.jpg и каталог для этого образа на моем компьютере/дома/nicpon/Документы/aplikacje /images/examples/specific_image.jpg

И отслеживающий:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/images/examples/sepcific_image.jpg 

Django Version: 1.4 
Python Version: 2.6.5 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'example', 
'registration') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response 
    89.      response = middleware_method(request) 
File "/usr/local/lib/python2.6/dist-packages/django/middleware/common.py" in process_request 
    67.    if (not urlresolvers.is_valid_path(request.path_info, urlconf) and 
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in is_valid_path 
    531.   resolve(path, urlconf) 
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve 
    420.  return get_resolver(urlconf).resolve(path) 
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve 
    300.      sub_match = pattern.resolve(new_path) 

Exception Type: AttributeError at /images/examples/specific_image.jpg 
Exception Value: 'list' object has no attribute 'resolve' 
+1

Поместите '{{example.image. url}} 'где-то вне' 'и посмотреть, что он отображает. – ilvar

+0

Какова трассировка стека? – goh

+0

Я добавил информацию к вопросу – Nicpon

ответ

2

Попробуйте сделать что-то вроде это ваш settings.py:

MEDIA_SERVER_URL = 'http://www.example.com/' 
MEDIA_URL = os.path.join(MEDIA_SERVER_URL, 'images/') 

, а затем сделать

src="{{ MEDIA_URL }}{{ example.image.url }}" 

Также проверьте права доступа:

  1. Медиа каталог (/ главная/nicpon/Документы/aplikacje/изображения /): Если позволяют читать ваш веб-сервер (например, команда chgrp www- изображения данных)
  2. Ваш веб-сервер должен быть настроен таким образом, чтобы надлежащим образом обрабатывать носители. В идеале можно использовать отдельный медиасервер, но вы должны проверить соответствующие URL-адреса, если у вас есть django, который обслуживает носитель (как будто это относится к вашему urls.py)
Смежные вопросы