我一直在学习django,从我读过的内容来看,MEDIA和STATIC应该分开,所以我有
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media_cdn')
MEDIA_URL = '/media/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
os.path.join(PROJECT_ROOT, 'media'),
)
我有能力从我的网站创建帖子,当我在本地开发时,网址就是这个
/media/None/earthquake.png
来自这个
{{post.image.url}}
我就像这样使用它
<img src='{{post.image.url}}>
显示图像
我读过的文档我并没有使用静态来获取图片。
这是我的帖子模型
def upload_location(instance, filename):
return "{}/{}".format(instance.id, filename)
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,
unique_for_date='publish')
image = models.ImageField(upload_to=upload_location,
null=True,
blank=True,
height_field='height_field',
width_field='width_field')
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
author = models.ForeignKey(User,
related_name='blog_posts')
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,
choices=STATUS_CHOICES,
default='draft')
video = models.BooleanField(default=False)
video_path = models.CharField(max_length=320,
null=True,
blank=True,)
我正在关注一个教程,我认为upload_location函数可能是问题,尽管我可能错了。如何让我的图像在制作中显示?我已经安装了whitenoise,但是在文档中它表示像这样提供我的图像
{% load static %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
所以我试过这个
<img src="{% static 'None/car.jpg' %}" alt="Hi!" width="100" height="100"/>
这是我的文件结构
如何在生产中显示我的图像
此示例未显示如何动态显示图像。我的每个帖子都有自己的照片。这不起作用
<img src="{% static '{{post.image.url'%}" alt="Hi!" width="100" height="100"/>
答案 0 :(得分:1)
在Heroku上以这种方式存储和提供用户上传的媒体是不可能的。您无需在磁盘上本地存储媒体,而是需要将其存储在Amazon S3等支持服务上。查看Django Storages包,它为许多不同的服务提供存储后端。