Джанго редирект не перенаправляет - PullRequest
0 голосов
/ 19 февраля 2012

Я новичок в транзакции Django. Я использую этот код для управления транзакцией вручную:

@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))

Все в порядке, но перенаправление не работает при сохранении моих данных, оно всегда возвращается на одну и ту же страницу.

1 Ответ

2 голосов
/ 19 февраля 2012

Ваше мнение не возвращает ответ, когда вы вызываете функцию redirect. Таким образом, ваше представление продолжается, и вы получаете ответ по умолчанию в конце представления.

Вам необходимо сделать следующее:

return redirect("/inputs/listdelivriedsupplierrequest/")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...