@br4z1

Django ImageField отображение изображения, в чем дело?

Привет. Собственно проблема. Делал все по примерам и разными способами, находил похожие вопросы здесь, но они как то мне особо не помогли. Хочу отобразить в заданной модели много картинок(если нужно) и главную обложку. При просмотре у меня на странице тем или другим способом пишется просто путь до файла, но самой картинки нет(404 в консоле), так же и на админке. Сами изображения все как положено есть в папках.

настройки settings:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

settings.TEMPLATES:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
            ],
        },
    },
]


Модель :

class Books(models.Model):
    name            = models.CharField(max_length=120)
    date            = models.DateField(null=True,blank=True)
    EAN             = models.IntegerField(null=True,blank=True)
    description     = models.TextField(max_length=500,null=True,blank=True)
    list_char       = models.TextField(max_length=200,null=True,blank=True)
    img             = models.ImageField(upload_to="fstimg/",null=True, blank=True)

    def __str__(self):
        return self.name

class ImageBooks(models.Model):
    imagebooks     = models.ForeignKey(Books,blank=True,null=True,default=None,related_name='images')
    image           = models.ImageField(upload_to='images/',null=True, blank=True)


Вью довольно просто:

def book(request):
    all_books = Books.objects.all()
    context = {"book_objects" : all_books,}
    return render(request, "book.html", context)


urls:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^book/$', book),
    #url(r'^book/$', BooksView.as_view()),
    url(r'^$', home, name='home'),

]
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_ROOT, document_root=settings.MEDIA_ROOT)


Шаблон:
{% for obj in book_objects %}
        <ul>
            <h1>{{ obj }}</h1>
            {% for i in obj.images.all %}
                {{ i.image.url }}
            <img src="{{ i.image.url }}" />
            {% endfor %}
            {{ obj.img.url }}
            <li><img src="{{ obj.img.url }}" alt=""></li>
            <li>Date: {{ obj.date }}</li>
            <li>EAN: {{ obj.EAN }}</li>
            <li>Description: {{ obj.description }}</li>
            <li>List Heroes: {{ obj.list_char }}</li>
        </ul>
    {% endfor %}

Помогите пожалуйста, в чем дело?
  • Вопрос задан
  • 2054 просмотра
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
У вас опечатка в строке, где вы добавляете урлы медиафайлов, вот исправленное, сравните:
..
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
..
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы