可以在django中设置全局变量吗?


In 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)

other()并没有返回6。请问该如何实现呢?

开发 django 全局变量 变量

8875598 10 years, 5 months ago

首先,django的模型并不推荐使用全局变量。在你的这种情况下,你有3种基本选择:

  1. 数据库
  2. session
  3. cookie

我推荐使用 sessions。确切滴说,session就是用来做这活的。

def foo(request):
   num = request.session.get('num')
   if not num:
      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

如果session过期,或者 session中并没有num,那么request.session.get('num')将返回一个None。如果你想给num一个缺省值(比如5),那么你可以使用这条语句:request.session.get('num',5)。现在,如果num没有被设置,那么将返回5。

中国人名很行 answered 10 years, 5 months ago

Your Answer