2017-10-16 84 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