django如何全局使用变量
Posted
技术标签:
【中文标题】django如何全局使用变量【英文标题】:django how to use a variable globally 【发布时间】:2015-05-01 18:18:52 【问题描述】:我的一个视图中有一个变量
def ViewName(request):
simple_variable = request.session['value']
在同一个views.py文件中,我有另一个视图
def AnotherViewName(request):
--------------------
--------------------
现在我想在我的AnotherViewName
视图中使用变量simple_variable
,我已经尝试过
def AnotherViewName(request):
global simple_variable
但是,它不起作用,现在我的问题是,我如何在 Django 中使用从一个视图到另一个视图的变量,或者如何全局使用变量?
提及simple_variable
存储来自session
的值,最初我必须在上面给出的ViewName
视图中调用它。
我正在使用 django 1.5
【问题讨论】:
【参考方案1】:我认为你可以这样做:
simple_variable = initial_value
def ViewName(request):
global simple_variable
simple_variable = value
...
def AnotherViewName(request):
global simple_variable
【讨论】:
提到,我的simple_variable
没有首字母,我必须以这种方式将值从我的ViewName
内的会话中存储在这个变量中 def ViewName(request): simple_variable = request.会话['值']
@Rego 你可以设置 simple_variable = None。并在你的视图函数中更新它。
这在多线程/处理环境中不会有问题吗?
在中间件中添加会话,它可以作为整个项目的全局变量【参考方案2】:
视图之间没有共享状态,因为它们可能在另一个线程中运行。因此,如果您想在视图之间共享数据,您必须使用数据库、文件、消息队列或会话。
这是另一个关于此的 ***。 How do you pass or share variables between django views?
rego 编辑问题后更新:
你不能这样吗?
def ViewName(request):
simple_variable = request.session['value']
def AnotherViewName(request):
simple_variable = request.session['value']
【讨论】:
我不能这样做,因为我必须确保我通过变量传递的值必须是永久的,因为我们知道存储在session
中的任何内容都是临时的。所以我可以t.
事实上,我打算在我的download
视图之一中使用这个变量,现在我们知道用户可以随时下载内容,他/她不必在会话。
我明白,但全局变量不是您通常应该使用的东西。我认为我们需要更多信息来了解您的目标是什么,以制定更好的解决方案。【参考方案3】:
或者您可以使用session。
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
【讨论】:
以上是关于django如何全局使用变量的主要内容,如果未能解决你的问题,请参考以下文章