Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 图像不上载到数据库。值错误。';图像';属性没有与其关联的文件_Python_Django_Python 3.x_Django Models - Fatal编程技术网

Python 图像不上载到数据库。值错误。';图像';属性没有与其关联的文件

Python 图像不上载到数据库。值错误。';图像';属性没有与其关联的文件,python,django,python-3.x,django-models,Python,Django,Python 3.x,Django Models,我正在做一个项目(简单的社交媒体网站)。登录用户应创建带有文本和图像的帖子 当我提交表单时,图像不会上载,并且出现ValueError,表示“image”属性没有与之关联的文件。” 将图像附加到帖子的唯一方法是从管理面板,但这不是我想要做的 我认为views.py中存在一个问题——我看到很多帖子,都是通过使用基于函数的视图来实现的,但我没有找到基于类的视图的解决方案 我是Django的新手,很可能我错过了一些小东西(至少我希望如此) 你能看一下并建议如何进行吗。任何帮助都将不胜感激 models

我正在做一个项目(简单的社交媒体网站)。登录用户应创建带有文本和图像的帖子

当我提交表单时,图像不会上载,并且出现ValueError,表示“image”属性没有与之关联的文件。”

将图像附加到帖子的唯一方法是从管理面板,但这不是我想要做的

我认为views.py中存在一个问题——我看到很多帖子,都是通过使用基于函数的视图来实现的,但我没有找到基于类的视图的解决方案

我是Django的新手,很可能我错过了一些小东西(至少我希望如此)

你能看一下并建议如何进行吗。任何帮助都将不胜感激

models.py

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
(正如达米尼在评论中指出的)。哇。我没想到会这么简单…谢谢!!!我会加上这个作为答案,这样你就可以投票并结束它