19

views.pyで

これを他のグローバル変数にアクセスしようとするとdef

def start(request):
    global num
    num=5
    return HttpResponse("num= %d" %num) # returns 5 no problem....

def other(request):
    num=num+1
    return HttpResponse("num= %d" %num)

def other 6を返しませんが、6である必要がありますか?ビューで変数にグローバルにアクセスするにはどうすればよいですか?

4

4 に答える 4

30

セッションを使用します。これはまさに彼らが設計されたものです。

def foo(request):
   num = request.session.get('num')
   if num is None:
      num = 1
   request.session['num'] = num
   return render(request,'foo.html')

def anotherfoo(request):
   num = request.session.get('num')
   # and so on, and so on

セッションが期限切れになった場合、またはセッションにnum存在しなかった(設定されていなかった)場合は、request.session.get('num')を返しNoneます。numデフォルト値を指定する場合は、これを行うことができます。セッションで設定されていないrequest.session.get('num',5)場合は、デフォルトで。になります。もちろん、そうするときはチェックは必要ありません。num5if num is None

于 2012-10-10T04:01:13.633 に答える
9

関数の1つの外でnumを宣言できます。

num = 0
GLOBAL_Entry = None

def start(request):
    global num, GLOBAL_Entry
    num = 5
    GLOBAL_Entry = Entry.objects.filter(id = 3)
    return HttpResponse("num= %d" %num) # returns 5 no problem....

def other(request):
    global num
    num = num + 1
    // do something with GLOBAL_Entry
    return HttpResponse("num= %d" %num)

global GLOBAL_Entry変数に割り当てる場合にのみglobalキーワードを使用する必要があります。そのため、2番目の関数では必要ありません。

于 2012-10-10T03:26:59.407 に答える
2

settings.pyを開いて、変数と値を追加できます。ソースコードに、これらの行を追加するだけです

from django.conf import settings
print settings.mysetting_here

これで、すべてのプロジェクトの変数にグローバルにアクセスできます。これを試してみてください、それは私のために働きます。

于 2017-11-24T09:18:05.643 に答える
1

次のようにother()メソッドでglobalキーワードを使用してこれを行うこともできます。

def other(request):
   global num
   num = num+1
   return HttpResponse("num= %d" %num)

これで6が返されます。これは、グローバル変数を使用する場合は常に、グローバルキーワードを使用して使用する必要があることを意味します。

于 2017-08-11T03:23:17.803 に答える