3 Stimmen

Wie man Django FormPreview in einer Ansicht einbindet

Ich habe eine Situation (Shopping-Cart-Checkout-Sequenz), in der der Workflow, der in der Django-FormPreview-Contrib-App verwendet wird, perfekt aussieht, außer dass ich einige Ansichtslogik haben muss, bevor ich sie aufrufe (ich kann die Checkout-Sequenz zum Beispiel nicht aufrufen, wenn der Warenkorb leer ist). Aus den Dokumenten sieht es so aus, als ob Sie FormPreview direkt aus dem URL-Kontext wie folgt aufrufen:

(r'^post/$', SomeModelFormPreview(SomeModelForm))

...und es ruft die überschriebene done() Methode für die FormPreview direkt auf (ohne eine Ansicht).

Da meine urls.py ähnlich ist:

url(r'^checkout/$', 'checkout', {'SSL': settings.ENABLE_SSL }, name = 'checkout'),

und meine Ansicht ähnlich ist:

def checkout(request):
    if cart.empty(request):
        cart = urlresolvers.reverse('shopping_cart')
        return HttpResponseRedirect(cart)
    if request.method == 'POST':
        checkoutform = CheckoutFormPreview(CheckoutForm)

Diese letzte Zeile ist, wo ich sie aufrufen möchte, aber ich kann nicht herausfinden, wie ich sie einwickeln soll... Vorschläge?

2voto

Alasdair Punkte 275312

Es sieht so aus, als ob CheckoutFormPreview(CheckoutForm) eine aufrufbare Ansicht zurückgibt, die Sie zu Ihrer URL-Konfiguration hinzufügen können. Wenn Sie es in Ihrer Ansicht aufrufen, müssen Sie einfach das erforderliche request-Argument übergeben. Geben Sie dann das Ergebnis zurück.

Wenn Sie es zusammensetzen, erhalten Sie (nicht getestet):

if request.method == 'POST':
    form_preview_view = CheckoutFormPreview(CheckoutForm)
    return form_preview_view(request)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X