我想在django管理界面中上传图片。在开发过程中一切正常,但当我把文件放在我的服务器上时,它不起作用。 我的服务器上有两条不同的路径。我放置所有源文件的地方和放置所有静态文件的地方。
源文件的路径:/htdocs/files/project/
静态文件的路径:/htdocs/html/project/
如果我上传图片,则会将其保存在/htdocs/files/project/media/
中。但我想将其保存在/htdocs/html/project/
中。我该如何改变路径?
以下是我的设置:
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
'/var/www/ssd1257/htdocs/html/'
)
这是我的模特:
class News(models.Model):
title = models.CharField(max_length=200, null=False)
date = models.DateField(null=False, default=datetime.now)
text = models.TextField(null=False, blank=True)
image = models.ImageField(upload_to="./news/")
答案 0 :(得分:0)
from django.core.files.storage import FileSystemStorage
upload_storage = FileSystemStorage(location=UPLOAD_ROOT, base_url='/') #upload root set to your project directory
class News(models.Model):
title = models.CharField(max_length=200, null=False)
date = models.DateField(null=False, default=datetime.now)
text = models.TextField(null=False, blank=True)
image = models.ImageField(upload_to='/', storage=upload_storage)
答案 1 :(得分:0)
此设置自行造成:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
将其更改为:
MEDIA_ROOT = '/htdocs/html/project/'
答案 2 :(得分:0)
上传的文件通常保存在以下路径中 MEDIA_URL +模型类中“upload_to”属性中指定的路径
所以在你的情况下, MEDIA_ROOT = os.path.join(BASE_DIR,' media')=“/ htdocs / files / project / media” 如果Django不退出
,它将创建路径但是我没有把'upload_to'中的圆点变成路径(“./ news /”)
因此,如果要更改存储上载文件的路径,只需更改MEDIA_ROOT即可 注意,请提供绝对完整路径
我猜它会的 MEDIA_ROOT =' / var / www / ssd1257 / htdocs / html / project'
此外,最好在保存之前重命名上传的文件以避免file_name冲突
def get_news_image_path(instance, filename):
path_first_component = ‘news/‘
ext = filename.split('.')[-1]
timestamp = millis = int(round(time.time() * 1000))
file_name = ‘news_’ + str(instance.id) + str('_logo_image_') + timestamp + str('.') + ext
full_path = path_first_component + file_name
return full_path
class News(models.Model):
title = models.CharField(max_length=200, null=False)
date = models.DateField(null=False, default=datetime.now)
text = models.TextField(null=False, blank=True)
image = models.ImageField(upload_to=get_news_image_path)
现在上传的文件将保存在 ' /无功/网络/ ssd1257 / htdocs中/ HTML /项目/新闻
你完成了
此外,还要设置适当的MEDIA_URL
Ex:MEDIA_URL =“媒体 因此,当生成上传图像的URL时 MEDIA_URL + upload_to路径
此外,将Web服务器配置为从适当的位置提供这些URL