【问题标题】:how to use one function variable into another function?如何将一个函数变量用于另一个函数?
【发布时间】:2012-12-26 07:16:16
【问题描述】:

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

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

def checkout_steps(request):

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

【问题讨论】:

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


    【解决方案1】:

    你不能。这就是局部变量:它们对于它们所在的函数是局部的。变量cart_formset 不存在,除非cart 正在执行。

    您可以从函数返回cart_formset,然后从checkout_steps 调用cart 以获取值。或者您可以将该变量存储在其他地方。我对 Django 的了解还不够,不知道最好的地方在哪里。鉴于您正在做的看起来像是一个购物车设置,我猜您想将该信息与会话一起存储,因此您可以查看 Django 的会话处理。

    【讨论】:

      【解决方案2】:

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

      1. 如果这两个功能相关,请使用类(如购物)和 添加 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. 如果函数评估的顺序是确定性的,那么您可以使用装饰器

      【讨论】:

      • 当我将它用作全局或类时。它显示错误。 class Shopping(object): def __init__(self): self.cart_formset = None def cart(self,request, template="shop/cart.html"): cart_formset = CartItemFormSet(instance=request.cart) - def checkout_steps(self ,request): - qwert = self.cart_formset context = {"form": form, "CHECKOUT_STEP_FIRST": CHECKOUT_STEP_FIRST, "qwert":qwert} return render(request, template, context) 错误是: TypeError at /shop/cart/ cart() 至少需要 2 个参数(1 个给定)
      猜你喜欢
      • 2017-05-03
      • 2017-11-04
      • 1970-01-01
      • 2013-04-22
      • 2018-11-20
      • 1970-01-01
      • 2020-07-27
      • 2019-04-07
      相关资源
      最近更新 更多