2011-05-22 57 views
3

我有一種情況(購物車結帳順序),在Django的FormPreview contrib應用程序中使用的工作流看起來很完美,除了我需要在我調用它之前發生一些視圖邏輯(我可以'例如,如果購物車是空的,則調用結賬順序)。從docs,它看起來像你直接從URLconf中調用FormPreview像這樣:如何在視圖中包裝Django FormPreview

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

...它直接呼籲FormPreview重寫的進行()方法(無圖)。

由於我的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) 

最後一行是我想在哪裏調用它,但可以」弄清楚如何包裝它...建議?

回答

2

它看起來像CheckoutFormPreview(CheckoutForm)返回一個可調用的視圖,你可以添加到你的url配置。如果您在視圖中調用它,則只需要通過所需的request參數。然後返回結果。

將其組合在一起,你有(未經測試):

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