【发布时间】:2019-09-04 07:52:15
【问题描述】:
我有一个接受 URL 的表单。然后使用 BS4 解析此 URL,并使用以下类创建产品:
class Product(models.Model):
product_id = models.CharField(max_length=50)
pub_date = models.DateTimeField(default=datetime.now)
title = models.CharField(max_length=255)
url = models.TextField()
price = models.FloatField()
我只想将独特的产品保存到数据库中。因此,我在 views.py 文件中的 add 函数中添加了以下代码,以通过产品 ID 来检查产品:
def add(request):
...
product.product_id = soup.find('h1', class_='product-id').text
if Product.objects.filter(product_id=product.product_id):
return render(request, 'product/add.html', {'error': 'Product already exists'})
else:
product.title = soup.find('h1', class_='product-name').text
...
product.save()
return redirect('/product/' + str(product.id))
目前,用户收到“产品已存在”错误消息。但我想实际渲染已经存在的产品。以下是详细产品的功能:
def detail(request, product_id):
product = get_object_or_404(Product, pk=product_id)
return render(request, 'product/detail.html', {'product': product})
详细产品的 URL 如下所示:http://example.com/product/22 可能有更好的方法来检索、比较然后渲染对象。请告诉我。提前致谢!
【问题讨论】:
标签: python django postgresql django-models beautifulsoup