【问题标题】:Is there anyway to upload multiple image in my blog?无论如何要在我的博客中上传多张图片吗?
【发布时间】:2020-05-08 18:13:12
【问题描述】:

''' 视图.py ''' 我可以在我的数据库中上传单个图像。我想上传多张图片。是他们无论如何要解决问题。帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮

class IndexView(View):
    def get(self, request, *args, **kwargs):
        slide = Slider.objects.all()
        blogslide = BlogSlider.objects.all()
        post_form = PostForm()
        paginator = Paginator(blogslide, 3)
        page = request.GET.get('page')

        blogslide = paginator.get_page(page)
        return render(request, 'index.html', {'slide': slide, 'blogslide': blogslide, 'post_form': post_form})

    def post(self, *args, **kwargs):
        post_form = PostForm(self.request.POST, self.request.FILES or None)
        if post_form.is_valid():
        title = post_form.cleaned_data['title']
        sub_title = post_form.cleaned_data['sub_title']
        description = post_form.cleaned_data['description']
        image = post_form.cleaned_data['image']

        p = BlogSlider(
            description = description,
            image = image,
            title = title,
            sub_title = sub_title,
            user = self.request.user,       
        )
        p.save()
        #return JsonResponse({'newcomic': model_to_dict(p)}, status=200)
        return redirect('/')

''' 表格.py 这是我的表格帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助 '''

class PostForm(ModelForm):
    image = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
    class Meta:
        model = BlogSlider
        fields = ('title', 'sub_title', 'description',)

''' 模型.py 这是模型。帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助帮助 '''

class BlogSlider(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    image = models.ImageField()
    title = models.CharField(max_length = 100)
    sub_title = models.CharField(max_length = 20)
    description = models.TextField(null=True, blank=True)
    slug = models.SlugField(null=True, blank=True)

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        self.slug = slugify(self.sub_title)
        super(BlogSlider, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('blog-details', kwargs={
            'slug':self.slug
        })
    class Meta:
        ordering = ['-id']

【问题讨论】:

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


    【解决方案1】:

    您可以创建一个不同的模型(例如 blogImageFields),其中您将 blogslider.id 作为外键,将 ImageField 作为第二个字段。对于多张图片,请在blogImageFields 中使用添加查询,这样您的表格数据将如下所示:

    博客ID、图片字段

    1,图像1

    1,图像2

    1,图像3

    2,图像1

    即您的 id=1 博客现在有三张图片。

    【讨论】:

    • 这里没有限制。您可以为每个博客条目添加任意数量的照片
    • 看不懂
    • 你可以通过归一化的概念来理解。该解决方案根据 1NF 规则,该规则规定任何单元格中都不应有列表,即值是原子的。您可以谷歌它以获得更好的理解。希望这将澄清您可以将多个图像关联到单独表格中的一个博客。附言由于主键约束,您不能在模型中两次插入相同的博客 ID,这就是需要单独表的原因
    猜你喜欢
    • 2016-03-04
    • 2016-04-16
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2016-11-22
    • 2019-11-13
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多