Python Django重定向不重定向
我是Django transaction的初学者,我使用以下代码手动管理我的事务:Python Django重定向不重定向,python,django,Python,Django,我是Django transaction的初学者,我使用以下代码手动管理我的事务: @transaction.commit_manually @login_required def delivried_supplier_request(request): if request.method == "POST": if 'add_ligne' in request.POST: cp = request.POST.copy()
@transaction.commit_manually
@login_required
def delivried_supplier_request(request):
if request.method == "POST":
if 'add_ligne' in request.POST:
cp = request.POST.copy()
cp['commande_fournisseur_ligne_set-TOTAL_FORMS'] = int(cp['commande_fournisseur_ligne_set-TOTAL_FORMS']) + 1
form = CommandeFournisseurForm(request.POST)
formset = DelivredCmdLigneFormSet(cp)
transaction.commit()
else:
form = CommandeFournisseurForm(request.POST)
formset = DelivredCmdLigneFormSet(request.POST)
if form.is_valid() and formset.is_valid():
try:
cmdFournisseur = form.save()
instances = formset.save(commit=False)
for instance in instances:
instance.commande_fournisseur = cmdFournisseur
instance.save()
transaction.commit()
redirect("/inputs/listdelivriedsupplierrequest/")
except Exception, e:
print e
messages.add_message(request, messages.ERROR, e)
transaction.rollback()
else:
form = CommandeFournisseurForm()
formset = DelivredCmdLigneFormSet()
transaction.commit()
with transaction.commit_on_success():
forms = [form]
return render_to_response("inputs/delivredsupplierrequest.html", {
"formset": formset, "forms": forms
}, context_instance=RequestContext(request))
一切正常,但在保存数据时重定向不起作用,它总是返回到同一页。调用
重定向
函数时,视图不会返回响应。因此,视图将继续,并在视图末尾获得默认响应
您需要在视图中执行以下操作:
return redirect("/inputs/listdelivriedsupplierrequest/")
为什么不使用
reverse()
进行重定向?这里的问题不是事务,而是重定向
行。见下面我的答案。顺便说一句,您希望在尝试中发现哪些例外情况。。除了街区?通常,transaction.commit\u on\u success
decorator就足够了,这使得视图更简单。