【问题标题】:Photos for each post in djangodjango 中每个帖子的照片
【发布时间】:2020-10-09 10:44:34
【问题描述】:

我创建了一个博客网站,我想为每个帖子显示图像,例如 YouTube 缩略图。我在帖子类中创建了一个图像字段,但在我创建帖子时它没有将我的图像保存在媒体文件夹中。

models.py 中的帖子类:

class Post(models.Model):
    name = models.CharField(default='Concert', max_length=100)
    invite = models.ImageField(default='invite.jpg', upload_to='invite_pics')
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.name    

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk}) 

这是我在 views.py 中的 CreatePost 类:

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    template_name = 'home_page/post_form.html'
    fields = ['name', 'invite']

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

我已经在 settings.py 中设置了 MEDIA_ROOT 和 MEDIA_URL:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

post_form.html:

<div class="container">
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Create New Event</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Post</button>
            </div>
        </form>
    </div>
</div> 

所以正如我之前所说,图像没有保存到 media/invite_pics 我该怎么办?

【问题讨论】:

  • 你的模板是什么样子的?尤其是&lt;form&gt; 部分?
  • 我已经更新了代码

标签: django django-models django-forms django-views


【解决方案1】:

为了提交数据和文件,需要指定formenctype="…"参数:

<form enctype="multipart/form-data" method="POST">
    …
</form> 

【讨论】:

    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2016-08-26
    • 2012-05-29
    • 1970-01-01
    • 2016-04-11
    • 2015-01-17
    相关资源
    最近更新 更多