我創建了一個依賴全局變量的Django應用程序。它實際上是一種存儲庫對象,它應該可用於我的view.py中的所有功能。如代碼中所見,每個視圖函數都會修改rp全局變量。在Django視圖中擺脫全局變量?
view.py
def index(request):
global rp
rp = repo.Repo()
...
rp.function1()
rp.function2()
rp.attribute1 = value
return render_to_response('result_pick.html',{'result_list': rp.parsed_output_data, 'input_file_name': rp.input_file_name }, context_instance = RequestContext(request))
def result(request):
global rp
rp.function3()
local_atribute = rp.attribute1
....
return render_to_response('result_show.html' ,{'rp':rp}, context_instance = RequestContext(request))
瀏覽了一下後,我得到的印象是,這將失敗的那一刻多個用戶將訪問該網頁,因爲他們將分享全球RP這將導致問題。
什麼是擺脫全局變量的首選解決方案,但仍然能夠在兩個函數中訪問rp?
是的,從這樣的觀點函數中分配給全局是一個非常糟糕的主意。如果你打算擁有全局對象,它們需要是真正的全局對象,而不是綁定到任何特定的請求狀態。 –