如何详细设置Django中自定义图片及文件上传路径(upload_to)?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1128个文字,预计阅读时间需要5分钟。
最近完成了一个仿知乎网站的项目,涉及大量图片和文件上传。以下是用Django自定义图片和文件上传路径的两种方式:
方法1:在Django模型中定义`upload_to`选项。
方法2:使用`FileSystemStorage`和自定义路径。
最近在做一个仿知乎网站的项目了,里面涉及很多图片和文件上传。趁此机会我给大家总结下Django自定义图片和文件上传路径的2种方式吧。
方法1: 在Django模型中定义upload_to选项。
Django模型中的ImageField和FileField的upload_to选项是必填项,其存储路径是相对于MEIDA_ROOT而来的。
我们来看一个简单案例(如下所示)。如果你的MEDIA_ROOT是/media/文件夹,而你的上传文件夹upload_to=“avatar", 那么你上传的文件会自动存储到/media/avatar/文件夹。
class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') avatar = models.ImageField(upload_to='avatar', verbose_name="头像")
如果你的文件名是sky.jpg, 那么图片上传后数据库中的avatar字段为avatar/sky.jpg, 该字段指向图片对象,而非绝对路径。要在模板中使用该图片,应该使用avatar.url (即/media/avatar/sky.jpg)。
但在实际应用中,请千万别这么做。
本文共计1128个文字,预计阅读时间需要5分钟。
最近完成了一个仿知乎网站的项目,涉及大量图片和文件上传。以下是用Django自定义图片和文件上传路径的两种方式:
方法1:在Django模型中定义`upload_to`选项。
方法2:使用`FileSystemStorage`和自定义路径。
最近在做一个仿知乎网站的项目了,里面涉及很多图片和文件上传。趁此机会我给大家总结下Django自定义图片和文件上传路径的2种方式吧。
方法1: 在Django模型中定义upload_to选项。
Django模型中的ImageField和FileField的upload_to选项是必填项,其存储路径是相对于MEIDA_ROOT而来的。
我们来看一个简单案例(如下所示)。如果你的MEDIA_ROOT是/media/文件夹,而你的上传文件夹upload_to=“avatar", 那么你上传的文件会自动存储到/media/avatar/文件夹。
class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') avatar = models.ImageField(upload_to='avatar', verbose_name="头像")
如果你的文件名是sky.jpg, 那么图片上传后数据库中的avatar字段为avatar/sky.jpg, 该字段指向图片对象,而非绝对路径。要在模板中使用该图片,应该使用avatar.url (即/media/avatar/sky.jpg)。
但在实际应用中,请千万别这么做。

