商品的详情页面的添加至购物车表单
定义form
class ProductAddToCartForm(forms.Form):
quantity = forms.IntegerField(label='数量',
widget=forms.TextInput(
attrs={
'size': '2',
'value': '1',
'class': 'quantity',
'max_length': '5',
}),
error_messages={'invalid': '请输入有效数量'},
min_value=1,
)
product_slug = forms.CharField(widget=forms.HiddenInput())
def __init__(self, request=None, *args, **kwargs):
self.request = request
super(ProductAddToCartForm, self).__init__(*args, **kwargs)
def clean(self):
# 检查用户浏览器端cookie是否开启
if self.request:
if not self.request.session.test_cookie_worked():
raise forms.ValidationError('需要启用cookie')
return self.cleaned_data
视图中使用
def show_product(request, product_slug, template_name):
p = get_object_or_404(Product, slug=product_slug)
categories = p.categories.filter(is_active=True)
page_title = p.name
meta_keywords = p.meta_keywords
meta_description = p.meta_description
form = ProductAddToCartForm(request) ##
return render(request, template_name, locals())
模板中使用
<form action="" method="post">
{% csrf_token %}
{{form}}
<input type="submit">
</form>