如何将图像文件加载到 Django File 对象中,然后保存到我的模型的 FileField 中
How to load an image file into a Django File object, then save into a FileField of my model
所以我花了超过 24 小时试图弄清楚如何将图像存储到我的模型中。
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
avatar = models.FileField(null=True, upload_to='www-avatar/')
我的Profile Model
有一个属性avatar
代表头像。
我想做的是在 User
完成注册过程后,Profile
模型将从我的静态文件夹中分配默认图像。
这是我的 Settings.py 静态
STATIC_ROOT = '/srv/foo/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "bar/resource/"), )
我要加载并存储到模型中的图像在 bar/resource/profile_light.png
到目前为止,我想出的解决方案是这样的
file = File()
url = static("bar/resource/profile_light.png")
file = urllib.request.urlopen(url).read()
r = File(file)
authbox.profile.avatar = File(file)
authbox.profile.save()
无济于事。我是 Django 的新手,非常感谢任何形式的帮助。
编辑:我的问题可能措辞不当,但我需要在创建的配置文件上添加默认图像。我在上面给出的保存头像的片段位于注册过程之后。所以基本上我想在每次有人注册时访问图像,并将图像存储为他们的默认头像。
首先将 models.py
中的字段类型更改为:
avatar = models.ImageField(upload_to='www-avatar/', null=True)
其次,在你的设置文件中你应该定义一个媒体目录
MEDIA_DIR = os.path.join(BASE_DIR, "www-avatar")
那么,您应该将 urls.py
文件修改为
urlpatterns = [
url(r'^admin/', admin.site.urls),
.......
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
最后但同样重要的是不要忘记安装 pillow 库 pip install Pillow
(https://pypi.org/project/Pillow/2.2.1/)
在您的模型中:
avatar = models.ImageField(upload_to='www-avatar', default='path/to/my/default/image.jpg')
所以我花了超过 24 小时试图弄清楚如何将图像存储到我的模型中。
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
avatar = models.FileField(null=True, upload_to='www-avatar/')
我的Profile Model
有一个属性avatar
代表头像。
我想做的是在 User
完成注册过程后,Profile
模型将从我的静态文件夹中分配默认图像。
这是我的 Settings.py 静态
STATIC_ROOT = '/srv/foo/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "bar/resource/"), )
我要加载并存储到模型中的图像在 bar/resource/profile_light.png
到目前为止,我想出的解决方案是这样的
file = File()
url = static("bar/resource/profile_light.png")
file = urllib.request.urlopen(url).read()
r = File(file)
authbox.profile.avatar = File(file)
authbox.profile.save()
无济于事。我是 Django 的新手,非常感谢任何形式的帮助。
编辑:我的问题可能措辞不当,但我需要在创建的配置文件上添加默认图像。我在上面给出的保存头像的片段位于注册过程之后。所以基本上我想在每次有人注册时访问图像,并将图像存储为他们的默认头像。
首先将 models.py
中的字段类型更改为:
avatar = models.ImageField(upload_to='www-avatar/', null=True)
其次,在你的设置文件中你应该定义一个媒体目录
MEDIA_DIR = os.path.join(BASE_DIR, "www-avatar")
那么,您应该将 urls.py
文件修改为
urlpatterns = [
url(r'^admin/', admin.site.urls),
.......
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
最后但同样重要的是不要忘记安装 pillow 库 pip install Pillow
(https://pypi.org/project/Pillow/2.2.1/)
在您的模型中:
avatar = models.ImageField(upload_to='www-avatar', default='path/to/my/default/image.jpg')