我有一个情况(购物车结帐序列),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)
这最后一行是我想要的地方,但无法弄清楚如何包装它...建议?
答案 0 :(得分:2)
看起来CheckoutFormPreview(CheckoutForm)
会返回一个可调用的视图,您可以将其添加到您的网址配置中。如果在视图中调用它,则只需传递所需的request
参数。然后返回结果。
把它放在一起,你有(未经测试):
if request.method == 'POST':
form_preview_view = CheckoutFormPreview(CheckoutForm)
return form_preview_view(request)