如何将一个函数变量用于另一个函数?

时间:2012-12-26 07:16:16

标签: python django django-forms django-templates cartridge

我在 Django模板中有两个功能。

def cart(request, template="shop/cart.html"):
 cart_formset = CartItemFormSet(instance=request.cart)

def checkout_steps(request):

我如何在 checkout_steps函数中使用 cart_formset 变量。

2 个答案:

答案 0 :(得分:1)

你做不到。这就是局部变量:它们是它们所在函数的本地变量。变量cart_formset不存在,除非cart正在执行。

您可以从该功能返回cart_formset,然后从cart拨打checkout_steps以获取该值。或者您可以将该变量存储在其他位置。我不太了解Django知道哪里最好的地方。鉴于你正在做的事情看起来像购物车设置,我猜你想把这个信息存储在会话中,所以你可以看看Django的会话处理。

答案 1 :(得分:1)

  

我如何在checkout_steps函数中使用cart_formset变量..

  1. 如果两个函数相关,请使用Class(如Shopping)和 将cart和checkout_steps添加为成员函数。

    class Shopping(object):
        def __init__(self):
            self.cart_formset = None
        def cart(self, request, template="shop/cart.html"):
            self.cart_formset = CartItemFormSet(instance=request.cart)
        def checkout_steps(self, request):
            #Use self.cart_formset
    
  2. 您还可以将变量cart_formset设置为全局变量,以使其在整个模块中全局可用

    def cart(request, template="shop/cart.html"):
         global cart_formset
         cart_formset = CartItemFormSet(instance=request.cart)
    def checkout_steps(self, request):
         #Use self.cart_formset
    
  3. 如果功能评估的顺序是确定性的,那么你可以使用装饰器