Изображение не загружается в шаблон в Django, но сохраняется в медиа-файл - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь получить опубликованное изображение для отображения в приложении Listview Blog.

Models.py

from django.db import models
class Post(models.Model):
    image = models.ImageField(upload_to='Post_images',null=True)
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    success_url = "post-detail"
    template_name = 'post_form.html'

urls.py

from django.conf.urls.static import static
from django.conf import settings
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

home.html

{% extends "blog/blogbase.html" %}
{% block content %}
    {% for post in posts %}
         {% if Post.image %}
            <img src="{{ post.image.url }}" class="img-responsive">
           {% else %}
           <span class="text-muted">No cover</span>
           {% endif %}
    {% endfor %}

Я вижу "Не напечатана обложка" навсе сообщения указывают на то, что Post.image не регистрируется.

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, '/media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static')
STATIC_URL = '/static/'

Я думаю, что это связано с корнем носителя, потому что когда я загружаю изображение, оно сохраняется в файле мультимедиа. Я думаю, что соединение html / urls / settings испорчено.

1 Ответ

0 голосов
/ 03 октября 2019

Ваша ошибка в этих строках шаблона:

{% for post in posts %}
         {% if Post.image %}
            <img src="{{ post.image.url }}" class="img-responsive">
           {% else %}
           <span class="text-muted">No cover</span>
           {% endif %}
    {% endfor %}

Во второй строке вы набрали post из цикла for. Это должно быть post.image, а не Post.image.

Полный фиксированный код:

{% extends "blog/blogbase.html" %}
{% block content %}
    {% for post in posts %}
         {% if post.image %}
            <img src="{{ post.image.url }}" class="img-responsive">
           {% else %}
           <span class="text-muted">No cover</span>
           {% endif %}
    {% endfor %}
...