基本问题是我找不到将表单数据传递到下一页的方法吗?
额外信息: 我在某处读到了我应该使用会话,这似乎是明智的,然而,序列化似乎不适用于没有模型的表单,但是,我可能是错的。
当我点击提交时,错误为AttributeError: 'BoundField' object has no attribute '_meta'
。
表格
class ItemCounterForm(Form):
item = CharField(max_length=30)
counter = IntegerFeild(min_value=1, max_value=1000)
def __init__(self, *args, **kwargs):
super(ItemCounterForm, self).__init__(*args, **kwargs)
查看
class ItemCounterView(View):
FormSet = formset_factory(ItemCounterForm)
def get(self, request, *args, **kwargs):
context = {
'form': self.FormSet()
}
return render(request, 'app:template', context)
def post(self, request, *args, **kwargs):
form = self.FormSet(self.request.POST or None)
if form.is_valid():
for single_form in form:
data_form = serializers.serialize('json', single_form)
request.session['form'] = data_form
return HttpResponseRedirect(reverse_lazy('app:next_page'))
else:
context = {
'form': self.FormSet()
}
return render(request, 'app:template', context)
感谢您的时间。
答案 0 :(得分:0)
如果您不打算将数据保存到数据库中。最简单的解决方案是将其作为url中的参数传递,如下所示:
url(r'^'your_url_name'/(?:(?P<item>[a-z]+)/)?(?:(?P<counter>[0-9]+)/)?$', views.'your_view_name'),
这是在任何参数可以为空或空的情况下。如果不是这种情况,请删除额外的问号符号。为了定义您的视图,您将传递请求参数item和counter参数。
您可以在客户端执行验证。欢呼声。