【发布时间】:2020-02-09 18:11:29
【问题描述】:
我试图在 Django 中创建一个购物车系统,并希望将产品的尺寸和数量传递为 <Select>
在视图中输入。 我的模板有:
<ul class="list-unstyled">
Select Size:
<select name="sizes">
{% for size in product.sizes.all %}
<li class="list-item list-inline-item"><option value="{{size.nameSize}}">{{size.nameSize}}</option> </li>
{% endfor %}
</select>
</ul>
这就是它的样子:
但是当我使用添加到购物车按钮提交它时,我得到了错误:
这是视图中的代码:
def add_item(request,pk):
product = get_object_or_404(Product,pk=pk)
size = request.POST['sizes']
selectsize = Size.objects.get(nameSize=size)
user = request.user
usercart = Cart.objects.get(owner=user)
newitem = CartItems.objects.create(cart = usercart,product=product,size=selectsize)
items = usercart.cartitems
return render(request,'cart.html',{'cartitems':items})
我正在尝试使用模板中的尺码名称并比较我在数据库中为该产品提供的尺码名称使用:
selectsize = Size.objects.get(nameSize=size)
我能够获得名称为 36 的大小,因此我想使用 post 将值 36 从模板传递给可变大小。
但我得到了提到的错误,我认为这是因为<select> 的名称在所有<option> 中都很常见。
如果我能找到另一种方法来做到这一点或解决这个错误,那么两种类型的解决方案都受到欢迎。 *我没有使用 Django Forms,因为我不知道如何显示 django 表单,就像我在购物车和产品页面上显示我的产品一样。
回答
我错过了提交按钮,而是使用
<a href="{% url 'add_item' product.pk %}>Add To Cart</a>"提交不起作用的表单。 现在我将其替换为<button class="btn btn-success" style="margin-top: 10px;" type="submit">Add To Cart New</button>并且表单 Action 给出了我试图去的链接。
<form method="post" enctype="multipart/form-data" action="{% url 'add_item' product.pk %}">
我犯了一个愚蠢的错误。
感谢您的回答。
【问题讨论】:
标签: django python-3.x django-forms django-views