允许用户通过 HTML 表单上传图片 - Django

时间:2021-07-15 14:29:42

标签: python django

我正在创建一个捐赠网络应用程序。我希望用户能够上传他们捐赠的物品的图片,并将其保存到我的数据库中。如果我通过管理面板执行此操作,则此方法有效,但我不知道如何使用 html 表单执行此操作。感谢所有提供帮助的人。我的代码在下面。


图片上传(这是表单中允许用户上传图片的部分):

<label class="label-input100" for="image">Image*</label>
                <div class="">
                    <input id="image" class="input100" type="file" name="image"  required>
                    <span class="focus-input100"></span>
                </div>

捐赠视图(我从表单的其他部分获取了大量数据,并将其保存到模型中。我还没有添加任何代码来保存图像,我不知道该怎么做

def donate(request):
    if request.method == "POST":
        title = request.POST['donationtitle']
        phonenumber = request.POST['phonenumber']
        category = request.POST['category']
        quantity = request.POST['quantity']
        location = request.POST['location']
        description = request.POST['description']
        date = datetime.datetime.now().date()
        ins = Donation(title = title, phonenumber = phonenumber, category = category, quantity = quantity, location = location, description = description, user=request.user, date = date )
        ins.save()
        # New part. Update donor's stats.
        UserDetail.objects.filter(user=request.user).update(donations=F('donations') + 1)
        UserDetail.objects.filter(user=request.user).update(points=F('points') + (quantity * 2))
        return HttpResponseRedirect( '/thankyou/', )
    return render(request,'donate.html')

捐赠模式:(我这里有图片字段,当我通过管理面板上传时它可以工作)

class Donation(models.Model):
  title = models.CharField(max_length=30)
  phonenumber = models.CharField(max_length=12)
  category = models.CharField(max_length=20)
  quantity  = models.IntegerField(blank=True, null=True,)
  location = models.CharField(max_length=50, blank=True, null=True,)
  image = models.ImageField(null = True, blank = True, upload_to = 'images/')       
  description = models.TextField()
  date = models.CharField(blank=True, null=True, max_length=999)
  user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        blank=True,
        null=True,
    )
  @property
  def imageURL(self):
    try:
      url = self.image.url
    except: 
      url = 'images/gooddeedplaceholderimage.png'
    return url

1 个答案:

答案 0 :(得分:0)

如果你添加一行应该就可以了

ins.image=request.FILES['image']

在 ins.save() 行之前