django 如何全局使用变量

RTa*_*Tan 8 python django

我的一个观点中有一个变量

def ViewName(request):
      simple_variable = request.session['value']
Run Code Online (Sandbox Code Playgroud)

在同一个 views.py 文件中,我有另一个视图

def AnotherViewName(request):
    --------------------
    --------------------
Run Code Online (Sandbox Code Playgroud)

现在我想simple_variable在我的AnotherViewName视图中使用该变量,我已经尝试过

def AnotherViewName(request):
     global simple_variable
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用,现在我的问题是,如何在 Django 中使用从一个视图到另一个视图的变量,或者如何全局使用变量?

在提及simple_variable是存储从值session和最初我不得不把上面给出内称之为ViewName视图。

我正在使用 Django 1.5

Mar*_*SHI 7

我认为你可以这样做:

simple_variable = initial_value 

def ViewName(request):
    global simple_variable
    simple_variable = value
    ...

def AnotherViewName(request):
    global simple_variable
Run Code Online (Sandbox Code Playgroud)

  • 这在多线程/处理环境中不会有问题吗? (2认同)

Mik*_*son 5

视图之间没有共享状态,因为它们可能在另一个线程中运行。因此,如果您想在视图之间共享数据,则必须使用数据库、文件、消息队列或会话。

这是另一个关于此的stackoverflow。 如何在 Django 视图之间传递或共享变量?

rego 编辑问题后更新:

你不能这样做吗?

def ViewName(request):
     simple_variable = request.session['value']

def AnotherViewName(request):
     simple_variable = request.session['value']
Run Code Online (Sandbox Code Playgroud)


jal*_*nga 5

或者您可以使用会话

def ViewName(request):
      #retrieve your value
      if 'value' in request.session:
          simple_variable = request.session['value']

def AnotherViewName(request):
    #set your varaible
    request.session['value'] = simple_variable
Run Code Online (Sandbox Code Playgroud)