Я добавил весь необходимый код для урегулирования .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',
],
},
},]