首页 > 解决方案 > 为什么表单提交上的 request.POST dict 中缺少数据

问题描述

在提交表单时,我在 request.POST 中获得了 csrf_token 和数量,但没有收到门票复选框。我有更多复选框,但在示例中省略了它们。

我是否需要使用 JS 将值添加到提交标签下的输入元素?

<form id="tour-form" role="form" class="tour-form clearfix" method="post"
 action="{% url 'tour:add-to-cart' tour_id=tour.pk slug=tour.get_slug %}" novalidate>
               {% csrf_token %}
               <strong>You are booking</strong>
               <span>{{tour.name}}</span>
              <ul>
            <li>
           <label class="custom-check" for="tour-form-tickets">
           <input type="checkbox" id="tour-form-tickets" name="tickets" value="1" price="{{tranport_prices_total|floatformat:'0'}}"/>
           <i></i>
           <strong>Corresponding airplane packages</strong> -
           <span>{{tranport_prices_total|floatformat:"0"}} €&lt;/span>
           </label>
          </li>
      </ul>
      <span class="total-box">
        Total <span>0 &euro;</span>
      </span>
    <input type="submit" value="order tour"/>
    <input type="hidden" name="quantity" value="1" />
</form>

观点是:

def tour_add_to_cart(request, slug, tour_id, hotel=None, shuttle=None):
    if not request.method == 'POST':
        return redirect(reverse(
            'tour:details',
            kwargs={'tour_id': tour_id, 'slug': slug}))
    tours = tour_for_cart(user=request.user)
    tour = get_object_or_404(tours, pk=tour_id)
    form, cart = handle_cart_form(request, tour, create_cart=True)
    if form.is_valid():
        form.save()
        if request.is_ajax():
            response = JsonResponse({'next': reverse('cart:index')}, status=200)
        else:
            response = redirect('cart:index')
    else:
        if request.is_ajax():
            response = JsonResponse({'error': form.errors}, status=400)
        else:
            response = tour_details(request, slug, tour_id, form)
    if not request.user.is_authenticated:
        set_cart_cookie(cart, response)
    return response

标签: djangodjango-forms

解决方案


推荐阅读