Django 使用一个 python 会话响应来自不同浏览器的不同请求
Django responding to different request from different browser with one python session
我实际上是一名 php(CodeIgniter) 网络开发人员,尽管我喜欢 python 我刚刚安装了 Bitnami's Django Stack,其中包含 Apache、MySQL、PostgreSQL 和 Python 2.7.9 安装了 Django。在安装过程中,它生成了一个简单的 Django 项目。
虽然它看起来很熟悉,但我开始向它添加一些代码行,但是当我保存它并刷新页面甚至重新启动浏览器时,我发现 python 实例仍然是 运行旧脚本。脚本仅在我重新启动 Apache 服务器时更新(我相信那是 Python 实例终止的地方)。
所以,为了用 Python 澄清这个问题,我创建了一个简单的视图并将其链接到 r'^test/'
from django.http import HttpResponse
i = 0
def test_view(request):
global i
i += 1
return HttpResponse(str(i))
然后我发现,即使在不同的浏览器之间切换,i
值也会继续增加,即随着其他浏览器的增加,值会继续增加。
那么,谁能告诉我这是 Django 的默认行为还是我的 Apache 安装有问题。
这是默认行为,如果您是 运行 gunicorn 并在 X 次请求左右后杀死工人,它 可能 重置,我不记得了。之所以如此,是因为应用程序会在请求得到服务后继续 运行。
我使用 PHP 已经有一段时间了,但我相信,收到一个请求,php 启动 运行 一个脚本,该脚本 returns 输出和然后该脚本终止。除了像 $_SESSION
这样的特殊全局变量,没有什么可以真正跨请求。
你的 Django 应用程序启动并继续 运行 除非有东西告诉它重新加载(当 运行 ./manage.py runserver
它会在检测到代码更改时重新加载,这就是你想要在开发过程中)。
如果您对每位访问者的数据感兴趣,请参阅 session data。它看起来像:
request.session['i'] = request.session.get('i', 0) + 1
您可以在其中存储访问者的数据,这些数据会一直存在,直到他们失去会话。
我实际上是一名 php(CodeIgniter) 网络开发人员,尽管我喜欢 python 我刚刚安装了 Bitnami's Django Stack,其中包含 Apache、MySQL、PostgreSQL 和 Python 2.7.9 安装了 Django。在安装过程中,它生成了一个简单的 Django 项目。
虽然它看起来很熟悉,但我开始向它添加一些代码行,但是当我保存它并刷新页面甚至重新启动浏览器时,我发现 python 实例仍然是 运行旧脚本。脚本仅在我重新启动 Apache 服务器时更新(我相信那是 Python 实例终止的地方)。
所以,为了用 Python 澄清这个问题,我创建了一个简单的视图并将其链接到 r'^test/'
from django.http import HttpResponse
i = 0
def test_view(request):
global i
i += 1
return HttpResponse(str(i))
然后我发现,即使在不同的浏览器之间切换,i
值也会继续增加,即随着其他浏览器的增加,值会继续增加。
那么,谁能告诉我这是 Django 的默认行为还是我的 Apache 安装有问题。
这是默认行为,如果您是 运行 gunicorn 并在 X 次请求左右后杀死工人,它 可能 重置,我不记得了。之所以如此,是因为应用程序会在请求得到服务后继续 运行。
我使用 PHP 已经有一段时间了,但我相信,收到一个请求,php 启动 运行 一个脚本,该脚本 returns 输出和然后该脚本终止。除了像 $_SESSION
这样的特殊全局变量,没有什么可以真正跨请求。
你的 Django 应用程序启动并继续 运行 除非有东西告诉它重新加载(当 运行 ./manage.py runserver
它会在检测到代码更改时重新加载,这就是你想要在开发过程中)。
如果您对每位访问者的数据感兴趣,请参阅 session data。它看起来像:
request.session['i'] = request.session.get('i', 0) + 1
您可以在其中存储访问者的数据,这些数据会一直存在,直到他们失去会话。