Отображение загруженных пользователем изображений в шаблоне - PullRequest
0 голосов
/ 26 января 2020

Я добавил весь необходимый код для урегулирования .py (MEDIA_URL, MEDIA_ ROOT и django .template.context_processors.media). Я также создал модель для изображения

class Image(models.Model):
    question = models.ForeignKey(Question, on_delete = models.CASCADE)
    file = models.ImageField(upload_to="polls/")
    author = models.CharField(max_length = 60, default = "Unknown")

Поэтому, когда я загружаю изображение через панель администратора, django сохраняет его в mysite / media / polls
Как получить доступ к изображениям из шаблон сейчас? Я много пробовал, и закрытая попытка выглядит так:

{% if question.image_set %}
  {% for image in question.image_set.all %}
    <img src="{{ MEDIA_URL }}{{ image.file }}">
  {% endfor %}
{% endif %}

Результат этого шаблона - что-то вроде <img src="media/polls/rabstol_net_china_04_1600x1200.jpg">, путь кажется правильным, но изображение не появляется. Я полагаю, это потому, что результатом является относительный путь, но я не знаю, как сделать его абсолютным.
Настройки:

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

1 Ответ

0 голосов
/ 26 января 2020
  {% for image in question.image_set.all %}
    {% if image.file %}
    <img src="{{ image.file.url }}">
    {% endif %}
  {% endfor %}
...