Итак, я прочитал несколько ответов на переполнение стека по этому вопросу, но ни один из них не может решить мою проблему. Я установил MEDIA_ROOT, MEDIA_URL, STATIC_ROOT и STATIC_URL, но по некоторым причинам изображения в моем media_url не отображаются на моем шаблоне, а изображения из моего static_url.Django - Изображение из MEDIA_URL не отображается на шаблоне?
Мой код ниже, а также дополнительные пояснения.
Settings.py
STATICFILES_DIRS = (
('/static/',
'/home/joe/Documents/exchange/Texchange/textchange/static',),
('/media/',
'/home/joe/Documents/exchange/Texchange/textchange/media/',),
)
MEDIA_ROOT = '/home/joe/Documents/exchange/Texchange/textchange/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/joe/Documents/exchange/Texchange/textchange/'
STATIC_URL = '/static/'
Models.py
class Posting(models.Model):
textbook = models.ForeignKey(Textbook)
condition = models.CharField(max_length = 200)
price = models.DecimalField(max_digits=5, decimal_places=2)
user = models.ForeignKey(User)
image = models.ImageField(upload_to='postingpics/%Y/%m/%d', default="../../static/textchange/nophoto.jpg")
post_date = models.DateTimeField('date_posted')
def __str__(self):
return str(self.textbook)
def was_posted_recently(self):
return self.post_date >= timezone.now() - datetime.timedelta(days=1)
was_posted_recently.admin_order_field = 'post_date'
was_posted_recently.boolean = True
was_posted_recently.short_description = 'Posted recently'
template.html
<div class="row marketing">
<div class="col-lg-6">
<h3>Textbook Info</h3>
<p><strong>Textbook: </strong>{{ posting.textbook.textbook_name }}</p>
<p><strong>Condition: </strong>{{ posting.condition }}</p>
<p><strong>Price: </strong>{{ posting.price }}</p>
<p><strong>Class: </strong>{{ posting.textbook.class_name }}</p>
<p><strong>ISBN: </strong>{{ posting.textbook.isbn }}</p>
<p><strong>Author: </strong>{{ posting.textbook.author }}</p>
<h3>Contact Info</h3>
<p><strong>User: </strong>{{ posting.user.username }}</p>
<p>Button to contact</p>
</div>
<div class="col-lg-6">
{% block content %}
<img src="{{ posting.image.url }}">
<p>{{ posting.image.url }}</p>
{% endblock %}
</div>
</div>
Так как вы можете увидеть, если я не загружать изображения для размещения он переходит в образ по умолчанию, который хранится в static/textchange. Это изображение будет отображаться на шаблоне. Если я загружу изображение, изображение не будет отображаться на шаблоне. В моем template.html у меня есть текст {{posting.image.url}} в тегах абзаца, чтобы увидеть, как выглядит URL-адрес для разных изображений.
Когда используется изображение по умолчанию в static/textchange, URL-адрес: /../static/textchange/nophoto.jpg, и изображение отображается хорошо.
Когда я пытаюсь отобразить загруженное изображение в шаблон, URL-адрес: /media/postingpics/2015/09/20/Star-Wars-Sith-Code-Wallpaper-2_dlPszgQ.jpg, и изображение не отображается. ..
Мне кажется странным, как статическое изображение имеет /../ перед статикой, но я не знаю, почему это отображается только для изображения из статической папки.
Любая помощь будет оценена по достоинству.
Ну, у меня есть папка с носителями и статическая папка внутри папки моего приложения. Но если я ставил статику в конце STATIC_ROOT, мои файлы css перестали загружаться ... – Programmingjoe
Я служил медиафайлам, как вы сказали, и он работает :) – Programmingjoe
STATIC_ROOT на самом деле не используется в разработке, папка просто должна существовать (если Я правильно помню).Пока папка 'static' находится в STATICFILES_DIRS, как указано выше, она будет подана – mindcruzer