首页 > 解决方案 > 如何通过一个在使用 Django 的视图中,我试图在 Django 中创建一个购物车系统,并希望将尺寸和产品数量作为视图中的 <Select> 输入传递。我的模板有:<ul class="list-unstyled"> 选择尺寸:<select name="sizes"> {% for size in product.sizes.all %} <li class="list-item list-inline-item "><option

问题描述

标签: djangopython-3.xdjango-formsdjango-views

解决方案


  1. 你不需要<ul>在这里使用标签。

你可以写:

Select Size:
<select  name="sizes">
    {% for size in product.sizes.all %}
        <option value="{{size.nameSize}}">{{size.nameSize}}</option>
    {% endfor %}
</select>

结果是一样的。

  1. 由于您没有指定add_item(request, pk)仅通过 POST 起作用,因此您不能指望 request.POST 总是会出现。

最好这样写你的代码:

if request.POST:
    # do something

如果您没有在模板中为您的选择指定默认值,则sizes不会在您的request.POST. 你可以这样写,以确保你得到一些价值:

request.POST.get('sizes', 'some_default_value')
  1. 仅仅因为你得到MultiValueDictKeyError你需要看看你得到什么请求。也许你得到 QueryDict,那么你需要提取第一个值。例如,请参阅这个SO question。例如,打印您的 request.POST 或检查类型。

推荐阅读