gpt4 book ai didi

django - 如何在 Django 中保存 HTML 表单中的图像?

转载 作者:行者123 更新时间:2023-12-04 11:00:41 25 4
gpt4 key购买 nike

class Product(models.Model):
product_name = models.CharField(max_length=250)
product_rate = models.IntegerField()
product_date = models.DateField(auto_now_add=True)
product_image = models.ImageField(upload_to='products/')
product_rules = models.TextField()
product_category = models.ForeignKey(Category,on_delete=models.CASCADE,null=True,blank=True)



def __str__(self):
return " Name: {} | Date: {}".format(self.product_name,self.product_date)

【这是我的产品型号】
使用这个模型,我可以将数据保存到我的数据库中。我还可以检索数据,然后我可以将其显示到浏览器中。

但是当我尝试从 HTML 表单中保存数据时,所有内容都会进入我的数据库,但我在媒体文件夹中看不到图像。

当我从管理面板保存图像时,我可以在媒体文件夹中看到图像,但不能从 HTML 表单中看到图像。
   <input type="file" name="product_image" id="product_image">

这是我的 View 功能,用于将此数据保存到数据库中
def addproducts(request):
if request.method == "POST":
product_name= request.POST.get('product_name')
product_rate= request.POST.get('product_rate')
product_rules= request.POST.get('product_rules')
product_image = request.POST.get('product_image')
Product.objects.create(product_name = product_name, product_rate =product_rate, product_rules =product_rules, product_image =product_image)

return redirect('products')

else:
print("error")

return render(request,'products/addproducts.html')

除了那个图像,它工作正常。但是我仍然可以从管理面板中看到图像名称。

我做错了什么? :/

最佳答案

您需要手动处理文件,但我不建议这样做。
手动处理来自 POST 请求的数据是不安全的并且容易出错。

ModelForm 是处理这个问题的完美方式。

只需创建一个 ModelForm 类:

class ProductForm(ModelForm):
class Meta:
model = Product
fields = ['product_name', 'product_rate', 'product_rules', 'product_image']

然后只需创建您的 Product从 POST 数据:
def addproducts(request):
if request.method == "POST":
form = ProductForm(request.POST, request.FILES)
if form.is_valid():
form.save()

return redirect('products')

else:
print("error")

return render(request,'products/addproducts.html')
form.is_valid()还将检查发送的请求是否有效。

关于django - 如何在 Django 中保存 HTML 表单中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58820175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com