javascript - Django submit form when browser is refreshed for multiple form
问题描述
There is a lot of similar question. But my problem is slightly different.
In a view, I am using multiple forms, for that, I am using formset and normal form.here is my view:
class CreateInvoice(TemplateView):
template_name = 'product/create_invoice.html'
product_list = Product.objects.get_all_product()
ItemFormSet = formset_factory(ItemForm, formset=BaseItemFormSet, extra=0)
def get_context_data(self, **kwargs):
if 'items' not in kwargs:
kwargs['items'] = self.ItemFormSet()
if 'order' not in kwargs:
kwargs['order'] = OrderForm()
kwargs['product_list'] = self.product_list
return super().get_context_data(**kwargs)
def post(self, request):
item_formset = self.ItemFormSet(request.POST)
order_form = OrderForm(request.POST)
if order_form.is_valid() and item_formset.is_valid():
order = order_form.cleaned_data
items = item_formset.cleaned_data
order['sold_by'] = request.user
order_id = Order.objects.crate_new_order(order=order, items=items)
return HttpResponseRedirect(self.render_to_response(self.get_context_data(pos_invoice=generate_pos_invoice(), order_id=order_id)))
else:
return HttpResponseRedirect(self.render_to_response(self.get_context_data(items=item_formset, order=order_form,)))
If forms are not valid then I need to render the same page with error messages. If forms are valid then also need to render the same page with the HTML receipt string and the extra data.
But here the problem is if the browser is refreshed (like pres crtl+f5) then the same forms are submitted again. From googling I came to know that this problem is created for I am using render instead of a redirect. Here is the link of the question from where I came to know this: Django form submit again on refresh
Now the main problem If I am redirecting the page then I am losing the functionality that I want to have. Like, can't send error messages if forms are invalid and send extra data like receipt HTML page string if forms are valid.
Now I don't know how to solve this issue or suggest a better approach for doing that. Thanks in advance.
解决方案
推荐阅读
- node.js - How can I restore node modules for multiple platforms?
- ide - 我可以有 CLion 项目窗格着色的图例吗?
- java - Univocity - 解析 CSV 时检测缺失的列
- html - 如何在 CSS 中使用 ::before 和 ::after 将形状(变换)相互叠加?边缘不会在背景上显示形状
- javascript - 如何使用 D3 和 javascript 从 csv 创建交互式可折叠树图?
- python - 在 Windows 上通过 Apache Lounge 部署烧瓶应用程序时出现内部服务器错误
- excel - 从另一个单元格复制数据(如果语句,也许?)
- typescript - 检查 null / undefined 的打字稿函数
- python - 什么样的过滤器适合在 OpenCV 中检测土壤上的裂缝?
- c# - 当 WebBrowser 完成文件下载时进行事件