Django检索postdata

Django检索postdata,django,django-forms,Django,Django Forms,我找不到postdata。出于某种原因,以下函数中的postdata返回一个空dict。我有一个购物车,我希望用户传递他们的配送偏好,并根据传递的字段计算总数 我的表格: class ProductAddToCartForm(forms.Form): """ form class to add items to the shopping cart """ quantity = forms.IntegerField(widget=forms.TextInput(attrs={'size':'2

我找不到postdata。出于某种原因,以下函数中的postdata返回一个空dict。我有一个购物车,我希望用户传递他们的配送偏好,并根据传递的字段计算总数

我的表格:

class ProductAddToCartForm(forms.Form):
""" form class to add items to the shopping cart """
  quantity = forms.IntegerField(widget=forms.TextInput(attrs={'size':'2', 'value':'1', 'style':'width: 40px;'}),
                              error_messages={'invalid':'Please enter a valid quantity.'},
                              min_value=1)
  product_slug = forms.CharField(widget=forms.HiddenInput())
  shipping = forms.BooleanField(initial=True, required=False)


  def __init__(self, request=None, *args, **kwargs):
      """ override the default so we can set the request """
      self.request = request
      super(ProductAddToCartForm, self).__init__(*args, **kwargs)

  def clean(self):
      """ custom validation to check for presence of cookies in customer's browser """
      if self.request:
          if not self.request.session.test_cookie_worked():
              raise forms.ValidationError("Cookies must be enabled.")
      return self.cleaned_data
我的看法是:

def show_cart(request, template_name="cart/cart.html"):
  if request.method == 'POST':
      postdata = request.POST.copy()
      if postdata['submit'] == 'Remove':
          cart.remove_from_cart(request)
      if postdata['submit'] == 'Update':
          cart.update_cart(request)
      if postdata['submit'] == 'Checkout':
          checkout_url = checkout.get_checkout_url(request)
          return HttpResponseRedirect(checkout_url)
  cart_items = cart.get_cart_items(request)
  page_title = 'Shopping Cart'
  cart_subtotal = cart.cart_subtotal(request)
  return render_to_response(template_name, locals(), context_instance=RequestContext(request))
需要postdata的函数:

def cart_subtotal(request):
  cart_total = decimal.Decimal('0.00')
  cart_products = get_cart_items(request)
  for cart_item in cart_products:
      cart_total += cart_item.product.price * cart_item.quantity
  return cart_total

我会将表单的init重写为:
def\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。在发布之前在视图中进行检查不是更好吗?我也看不到您在哪里访问表单中的
shipping
值。。。不要直接信任来自POST dictionary的数据。而是从表单中获取已清理的数据。