我正在使用一个电子商务webapp,在“产品详细信息”视图中,我想提供在结账前设置数量的选项。我想我可以用一个简单的表格来做:
class QuantityForm(forms.Form):
quantity = forms.IntegerField(widget=forms.NumberInput(attrs={'class':'required'}))
然后将其实现到视图:
class BagDetailView(DetailView):
context_object_name = 'ctx'
model = Bag
template_name = 'product_page.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = QuantityForm(initial={'quantity':1})
context['Jackson'] = Bag.objects.get(title = 'Jackson')
context['Anthony'] = Bag.objects.get(title = 'Anthony')
return context
但问题是POST请求。我无法调用render()
函数,因为我有另一个视图来处理签出,所以我需要调用redirect()
。代码如下:
def post(self, *args, **kwargs):
form = QuantityForm()
b = Bag.objects.get(slug=kwargs['slug'])
if form.is_valid:
return redirect(b)# calls get_absolute_url which redirects to checkout/<slug>
我无法访问我在另一个视图中发布的数据。我认为将这样的数据发布到另一个视图是一种不好的做法,但我只能想出这样的方法。是否有其他方法将该数据传递到其他视图
注意:我没有使用购物车系统,因为我只处理两种产品
我不确定我是否理解正确,也许你可以这样做
在“增加数量”模板中,您可以放置以下内容:
当用户单击此按钮时,将调用一个函数:
另一个想法是使用会话。您可以在详细信息页面中增加金额并将其保存到会话中,然后在签出页面中使用
我希望我正确地理解了你的问题
相关问题 更多 >
编程相关推荐