-1

Django テンプレートには 2 つの機能があります。

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

def checkout_steps(request):

checkout_steps 関数でcart_formset変数を使用する方法。.

4

2 に答える 2

1

checkout_steps関数でcart_formset変数を使用する方法。

  1. 2つの関数が関連している場合は、クラス(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. 関数評価の順序が決定論的である場合は、デコレータを使用できます

于 2012-12-26T07:26:08.260 に答える
1

できません。これがローカル変数です。ローカル変数は、それらが含まれている関数に対してローカルです。変数は、が実行されているcart_formset場合を除いて存在しません。cart

関数から戻ってからfromをcart_formset呼び出して、値を取得できます。または、その変数を別の場所に保存することもできます。Djangoについて、最適な場所がどこにあるかを知るのに十分な知識がありません。あなたがしていることはショッピングカートのセットアップのように見えることを考えると、セッションでその情報を保存したいと思うので、Djangoのセッション処理を見ることができます。cartcheckout_steps

于 2012-12-26T07:24:02.227 に答える