Отображать изображения, хранящиеся в 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

Все остальное работает нормально, только загруженные изображения не отображаются. Спасибо за ваше время

0 ответов

Другие вопросы по тегам