我在Heroku上部署了一个带有管理站点的小型Django应用。每次dyno掉下来时,我之前在管理站点中预加载的所有媒体文件(图像)都会消失。我不确定图像是否正确存储在postgresql数据库中,或者是否没有存储在数据库中,仅存储在介质位置。其余所有功能都在工作,只是在dyno入睡后找不到的图像。我能做些什么?这是我的代码:
models.py
from django.db import models
class Service(models.Model):
title = models.CharField(max_length=40)
description = models.TextField()
enable = models.BooleanField(default=False)
image = models.ImageField()
def __str__(self):
return self.title
def __unicode__(self):
return self.title
管理员
from django.contrib import admin
from . import models
class ServiceAdmin(admin.ModelAdmin):
list_display = ("title","enable")
def image_img(self):
if self.image:
return u'<img src="%s" />' % self.image.url
else:
return '(No image found)'
image_img.short_description = 'Thumb'
image_img.allow_tags = True
admin.site.register(models.Service, ServiceAdmin)
settings.py
import os
import dj_database_url
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
POSTGRES_URL = "HEROKU_POSTGRESQL_<NAME>_URL"
DATABASES = {'default': dj_database_url.config(default=os.environ[POSTGRES_URL])}
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
如果您还需要其他东西,请现在让我。谢谢
在管理站点中创建图像时,会将它们保存到媒体目录中的Heroku dyno。因为Heroku使用的是临时文件系统,所以您预期会遇到这种行为。动态数每24小时(可能在它们休眠时)循环一次,因此您直接在Heroku上创建或修改的任何文件都将被丢弃。您需要将上传的图像存储在持久性较高的位置,例如Amazon S3。您还可以将映像添加到存储库中,提交,然后将它们推送到heroku,只要您的数据块大小保持在300 MB以下
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句