如何在视图中包装Django FormPreview

时间:2011-05-22 07:19:55

标签: django django-forms

我有一个情况(购物车结帐序列),Django的FormPreview contrib app中使用的工作流程看起来很完美,除了我需要在调用之前有一些视图逻辑(如果购物车我不能调用结帐序列)例如,是空的。从docs开始,您似乎直接从urlconf调用FormPreview,如下所示:

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

...它直接调用FormPreview的重写的done()方法(没有视图)。

因为我的urls.py类似于:

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

我的观点类似于:

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

这最后一行是我想要的地方,但无法弄清楚如何包装它...建议?

1 个答案:

答案 0 :(得分:2)

看起来CheckoutFormPreview(CheckoutForm)会返回一个可调用的视图,您可以将其添加到您的网址配置中。如果在视图中调用它,则只需传递所需的request参数。然后返回结果。

把它放在一起,你有(未经测试):

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