Отображать изображения, хранящиеся в ImageField с помощью шаблонов Django
Я нахожусь в производственной среде, собирающейся полностью развернуть мое приложение, используя digitalocean, но у меня возникла эта небольшая проблема. Я пытался отобразить загруженные пользователем изображения, но они, кажется, не отображаются, даже если они были загружены и сохранены в '/home/kingiyk/stylplus/static/'
вот мой код
settings.py
STATIC_ROOT = '/home/kingiyk/stylplus/static/'
STATIC_URL = '/static/'
MEDIA_ROOT = '/home/kingiyk/stylplus/static/'
MEDIA_URL = '/media/'
Image model (models.py)
class Image(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='images_created')
title = models.CharField(max_length=2000)
slug = models.SlugField(max_length=200,
blank=True)
url = models.URLField()
image = models.ImageField(upload_to='/home/kingiyk/stylplus/static/')
description = models.TextField(blank=True, null=True)
created = models.DateField(auto_now_add=True,
db_index=True)
users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name='images_liked', blank=True)
class Meta:
ordering = ('-created',)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Image, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('images:detail', args=[self.id, self.slug])
пожалуйста, сделайте больший акцент на поле изображения (upload_to)
nginx conf
server {
listen 80;
server_name 67.207.87.22;
location = /favicon.ico { access_log off; log_not_found off;
}
location /static/ {
alias /home/kingiyk/stylplus/static/;
}
location /media/ {
alias /home/kingiyk/stylplus/media/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/kingiyk/stylplus/stylplus.sock;
}
}
views.py
def image_detail(request, id, slug):
image = get_object_or_404(Image, id=id, slug=slug)
comments = image.comments.all()
if request.method == 'POST':
comment_form = CommentForm(data=request.POST)
#if comment_form.is_valid():
new_comment = comment_form.save(commit=False)
new_comment.image = image
new_comment.user = request.user
new_comment.save()
else:
comment_form = CommentForm()
return render(request, 'images/image/detail.html', {'section': 'images', 'image': image, 'comments': comments,'comment_form': comment_form})
HTML
<a href="{{ image.image.url }}">
<img src="{{ image.image.url }}" alt="{{ image.title }}" class="image-detail"/>
</a>
HTML должен отображать изображение, но это не так. Хотя {{ image.title }} и {{ image.description }}, но отображают заголовок и описание соответственно.
Следует отметить, что
однако {{ image.image.url }} этого не делает. так что я думаю, что это, вероятно, не из конф. nginx.
Я использую django 1.8.6
Все остальное работает нормально, только загруженные изображения не отображаются. Спасибо за ваше время