django global variable

You could declare num outside one of the functions.

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)

You only need to use the global keyword if you are assigning to a variable, which is why you don't need global GLOBAL_Entry in the second function.


You can open settings.py and add your variable and value. In your source code, just add these line

from django.conf import settings
print settings.mysetting_here

Now you can access your variable globally for all project. Try this, it works for me.


Use sessions. This is exactly what they are designed for.

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

If the session has expired, or num did not exist in the session (was not set) then request.session.get('num') will return None. If you want to give num a default value, then you can do this request.session.get('num',5) - now if num wasn't set in the session, it will default to 5. Of course when you do that, you don't need the if num is None check.