2012-08-17 89 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

相关问题