如何在Django视图中渲染对象?

时间:2019-04-13 22:30:54

标签: python django postgresql django-models beautifulsoup

我有一个接受URL的表格。然后使用BS4解析此URL,并使用以下类创建产品:

web

我只想将唯一的产品保存到数据库中。因此,我将以下代码添加到了 views.py 文件的 add 函数中,以按其ID检查产品:

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()

当前,用户收到“产品已存在”错误消息。但是我实际上想渲染已经存在的产品。这是详细产品的功能:

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))

详细产品的URL如下:http://example.com/product/22 可能有更好的方法来检索,比较然后呈现对象。请告诉我。预先感谢!

1 个答案:

答案 0 :(得分:1)

您可以直接重定向到产品的定义的get_absolute_url属性吗?

public void secondTest(){
  step1();
  step2().takeScreenshot();
  step3().takeScreenshot();
  step4();
  step5();
  step6().takeScreenshot();
}