2017-10-16 85 views
0

如何在网页/功能之间传递变量?例如,假设我访问网页“test3.html”,我想获得变量a_test1和a_test2的总和,这些变量是访问test1.html和test2.html时增加的“全局”变量。 test1.html,test2.html和test3.html可以多次访问并独立访问。下面的代码不起作用,但它会如果我能以某种方式使a_test1和a_test2全局变量?可以这样做吗?跨网页的Django全局变量?

另一种选择可能是通过“请求”参数传递这些变量?可以这样做吗?

urlpatterns = [ 
    url(r'^test1/$', views.test1), 
    url(r'^test2/$', views.test2), 
    url(r'^test3/$', views.test3), 
] 

在views.py:

def test1(request): 
    a_test1=1+a_test1 
    return render(request,'test1.html',{'a_test1': a_test1}) 
    #other stuffs 

def test2(request): 
    a_test2=1+a_test2 
    return render(request,'test2.html',{'a_test2': a_test2}) 
    #other stuffs 

def test3(request): 
    a_test3=a_test1+a_test2 
    return render(request,'test3.html',{'a_test3': a_test3}) 
    #other stuffs 
+0

我没有必要要做到这一点,但你可以尝试创建一个新类来做到这一点。将变量放在类中,每次加载页面时都会增加。 –

+0

全局变量对每个用户都是一样的。你的系统是否只能由一个人使用? – Selcuk

+0

嗯,看起来像它必须是一个“全局”变量只为一个特定的会话。可以这样做吗? – YeP

回答

3

你可以以跨多个模板和视图共享变量使用会话变量!例如:

def test1(request): 
    a_test1=1+a_test1 
    request.session['my_variable'] = a_test1 
    return render(request,'test1.html',{'a_test1': a_test1}) 

因此,您可以访问您网站上的任何地方的request.session ['my_variable']!

https://docs.djangoproject.com/en/1.11/topics/http/sessions/

+0

这绝对是正确的方法,除了'request.session'不是其他方式。 –

+0

我刚刚更新了我的表格!对不起,:) :) –

+0

这太棒了。正是我在找什么!非常感谢! – YeP