Python 图像不上载到数据库。值错误。';图像';属性没有与其关联的文件
我正在做一个项目(简单的社交媒体网站)。登录用户应创建带有文本和图像的帖子 当我提交表单时,图像不会上载,并且出现ValueError,表示“image”属性没有与之关联的文件。” 将图像附加到帖子的唯一方法是从管理面板,但这不是我想要做的 我认为views.py中存在一个问题——我看到很多帖子,都是通过使用基于函数的视图来实现的,但我没有找到基于类的视图的解决方案 我是Django的新手,很可能我错过了一些小东西(至少我希望如此) 你能看一下并建议如何进行吗。任何帮助都将不胜感激 models.pyPython 图像不上载到数据库。值错误。';图像';属性没有与其关联的文件,python,django,python-3.x,django-models,Python,Django,Python 3.x,Django Models,我正在做一个项目(简单的社交媒体网站)。登录用户应创建带有文本和图像的帖子 当我提交表单时,图像不会上载,并且出现ValueError,表示“image”属性没有与之关联的文件。” 将图像附加到帖子的唯一方法是从管理面板,但这不是我想要做的 我认为views.py中存在一个问题——我看到很多帖子,都是通过使用基于函数的视图来实现的,但我没有找到基于类的视图的解决方案 我是Django的新手,很可能我错过了一些小东西(至少我希望如此) 你能看一下并建议如何进行吗。任何帮助都将不胜感激 models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField(null=True)
image = models.ImageField(upload_to='post_pics/', null=True, blank=True)
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
views.py-用于创建帖子的CBV
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['title', 'content', 'image']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
确保您的表单中有enctype,如
<form role="form" method="post" enctype="multipart/form-data">
确保表单中有enctype,如
<form role="form" method="post" enctype="multipart/form-data">
图像不上载到数据库
请不要这样做您应该记住以下几个严重的限制: 如果您正在将静态数据(图像/视频/等)存储到后端存储上的某个文件夹中,您可能会遇到问题,此时您将需要多个后端服务器。这个文件夹很可能需要某种文件系统复制来覆盖 如果将静态数据直接存储到数据库中,情况可能会更糟。关系数据库不是为巨大的二进制通信量而设计的,您将很快陷入性能下降的境地 建议的方法是将此类内容直接存储到某些CDN。实施起来有点困难,但从中期来看,这是最有效的方法。这将有助于高效的静态内容交付、良好的缓存、高效的流量分配(前端服务器的流量更少=性能更好),并最终保持数据库的小型化和快速化 图像不上载到数据库 请不要这样做
您应该记住以下几个严重的限制: 如果您正在将静态数据(图像/视频/等)存储到后端存储上的某个文件夹中,您可能会遇到问题,此时您将需要多个后端服务器。这个文件夹很可能需要某种文件系统复制来覆盖 如果将静态数据直接存储到数据库中,情况可能会更糟。关系数据库不是为巨大的二进制通信量而设计的,您将很快陷入性能下降的境地
建议的方法是将此类内容直接存储到某些CDN。实施起来有点困难,但从中期来看,这是最有效的方法。这将有助于高效的静态内容交付、良好的缓存、高效的流量分配(减少前端服务器的流量==更好的性能),并最终保持数据库的小型化和快速化。在表单中,您是否有enctype=“multipart/form data”之类的内容?您是否可以显示此视图的模板?只是为了确保在HTML表单标记中正确设置了
enctype
(正如达米尼在评论中指出的)。哇。我没想到会这么简单…谢谢!!!我将添加它作为答案,这样您就可以在表单中投票并关闭它。您是否有enctype=“multipart/form data”之类的内容?您是否可以显示此视图的模板?只是为了确保在HTML表单标记中正确设置了enctype
(正如达米尼在评论中指出的)。哇。我没想到会这么简单…谢谢!!!我会加上这个作为答案,这样你就可以投票并结束它