2012-08-17 41 views
1

Django應用程序將文件中的數據加載到Python字典中,對其進行處理並將其作爲http響應發送。現在說在Web服務器上接收到n個請求,那麼這個Django應用程序將運行n次,並將數據從文件加載到Python字典n次。我想知道是否可以使這個數據只加載到字典中,而n http響應可以被提供。可以作爲遵循如何在兩個不同的http請求之間共享字典

一個例子view.py文件問題情境:

from django.http import HttpResponse 
from django.http import HttpRequest 

def hello(request): 
    data = open("abc").readlines() 
    return HttpResponse(data[0]) 

回答

3

這是Django Middleware的工作。將其添加到您的設置中,它將在您的請求中保留。它是一個更好的選擇,然後持久性,肯定比使用全局對象好很多。

中間件是一個鉤入Django請求/響應處理的框架。這是一個輕量級的低級「插件」系統,用於全球改變Django的輸入和/或輸出。每個中間件組件都負責完成一些特定的功能。例如,Django包含一箇中間件組件XViewMiddleware,它爲每個對HEAD請求的響應添加一個「X-View」HTTP頭。

4

綁定字典全局名稱將使其持續只要Django項目運行。請注意,每個Django進程(某些WSGI容器,例如mod_wsgi,可以爲應用程序運行多個進程)將擁有自己的獨立字典副本。

+0

我不認爲這是正確的做法。即使它有效... – 2012-08-17 03:07:49

+1

@Torsten:當然*它不是。但這是由於問題的本質。 – 2012-08-17 03:15:59

+0

我喜歡你的態度,但我們不應該建議用戶使用更好的做法嗎? :D – 2012-08-17 03:32:42

4

如果數據與用戶相關,則可以使用djanog的session framework跨請求保留數據。如果數據需要在衆多用戶之間共享,則可以使用cache

+0

數據與用戶無關,但來自請求的ips範圍已經生成。 – codersofthedark 2012-08-17 03:20:03

相關問題