【问题标题】:how to upload image in django CBV(class based Views)createviews如何在 django CBV(基于类的视图)createviews 中上传图像
【发布时间】:2020-02-17 19:57:21
【问题描述】:

我一直在使用 Django 创建一个博客共享应用程序。我正在尝试添加一个图像字段,以便用户能够上传图像并将它们作为帖子查看。但是图片没有上传。 Django 甚至没有抛出任何错误。代码运行正常,但图片没有上传。

我尝试在模板中添加“enctype”,并在 urls.py 中进行必要的更改。我什至在 settings.py 中指定了 MEDIA_ROOT 和 MEDIA_URL。 如果设置。调试: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 我已经在我的 urls.py 中添加了这个。

我的模型.py

    from django.utils import timezone
    from django.contrib.auth.models import User
    from django.urls import reverse


    class Post(models.Model):
        title = models.CharField(max_length=100)
        content = models.TextField()
        date_posted = models.DateTimeField(default=timezone.now)
        author = models.ForeignKey(User, 
                         on_delete=models.CASCADE,related_name='% 
                                 (app_label)s_%(class)s_related')
        picture = 

  models.ImageField(upload_to='images',default='default.png',null=True)

        def __str__(self):
            return self.title 

       def get_absolute_url(self):
           return reverse('project-home')

我的观点.py

    class PostCreateView(SuccessMessageMixin,LoginRequiredMixin,CreateView):
        model = Post
        fields = ['title','content','picture']
        success_message = 'Your submission is sucessful!'
        def form_valid(self,form):
        form.instance.author = self.request.user
        return super().form_valid(form)

        def get_success_message(self):
            return self.success_message

图片未上传。提前致谢!

【问题讨论】:

  • 请出示您的模板。您是否在表单元素上正确设置了enctype
  • {% csrf_token %}
    博文 {{ form|crispy }}
  • 你有一个错字:encytpe 而不是enctype
  • 已更改...仍然没有更改...

标签: python django blogs


【解决方案1】:

在表单元素中添加 enctype="multipart/form-data"

<form method="post" enctype="multipart/form-data">
    ......
    ......
</form>

【讨论】:

    【解决方案2】:

    我认为您需要为 Post 模型创建一个表单并将此表单添加到创建视图 [form_class=PostForm] 而不是 [model=Post]

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 2014-06-23
      • 1970-01-01
      • 2018-05-14
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多