Django检索postdata
我找不到postdata。出于某种原因,以下函数中的postdata返回一个空dict。我有一个购物车,我希望用户传递他们的配送偏好,并根据传递的字段计算总数 我的表格: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
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的数据。而是从表单中获取已清理的数据。