3

我有两个 Django 项目和应用程序在同一个 Apache 安装上运行。两个项目和两个应用程序都具有相同的名称,例如 myproject.myapplication。它们分别位于单独命名的目录中,因此看起来像 .../dir1/myproject/myapplication 和 .../dir2/myproject/myapplication。

关于实际面向公众的应用程序的一切工作正常。当我登录到任何一个管理站点时,它似乎都可以,但是如果我切换并在对面的管理站点上执行任何工作,我就会退出第一个管理站点。简而言之,我无法同时登录两个管理站点。任何帮助,将不胜感激。

4

5 回答 5

9

设置SESSION_COOKIE_DOMAIN选项。您需要为每个站点设置域,这样 cookie 就不会相互覆盖。

您还可以使用 SESSION_COOKIE_NAME 使每个站点的 cookie 名称不同。

于 2008-11-29T07:27:35.360 回答
1

我在同一个 Apache 服务器(在 CentOS 上)上托管的实时和临时站点遇到了类似的问题。我为每个站点的设置添加了唯一的 SESSION_COOKIE_NAME 值(在 local_settings.py 中,如果没有,则创建一个并将其导入 settings.py 中),为实时站点设置 SESSION_COOKIE_DOMAIN 并将 SESSION_COOKIE_DOMAIN = None 设置为暂存。我还运行“python manage.py cleanup”来(希望)清除数据库中的任何冲突信息。

于 2009-06-17T14:23:25.433 回答
0

好吧,如果它们具有相同的项目和应用程序名称,那么数据库和表将是相同的。保存会话信息的 django_session 表对于两个站点是相同的。您必须使用不同的项目名称,这些名称将放在不同的 MySQL(或其他)数据库中。

于 2008-11-29T05:56:53.547 回答
0

会话信息存储在数据库中,因此如果您与两个正在运行的实例共享数据库,注销一个位置将使您同时注销两个实例。如果您的情况需要您共享数据库,最简单的解决方法可能是创建具有管理员权限的第二个用户帐户。

于 2008-11-29T07:06:58.383 回答
0

让我猜猜,这是否在您的本地主机上运行?并且您将每个站点分配到不同的端口?即本地主机:8000,本地主机:8001 ..?

我有同样的问题!(虽然我本身并没有运行 Apache)

当您登录到管理站点时,您会在浏览器中获得一个与域“localhost”关联的 cookie,该 cookie 存储了某种指向存储在服务器数据库中的会话的指针。

当您访问其他站点时,服务器会尝试解释 cookie,但失败了。我猜它会删除cookie,因为它是“垃圾”。

在这种情况下,您可以做的是更改您的域

第一个站点使用 localhost:8000,第二个站点使用 127.0.0.1:8001。这样第二个站点就不会尝试读取第一个站点设置的 cookie

我还认为您可以根据需要编辑您的 HOSTS 文件以向 127.0.0.1 添加更多别名。(但我没试过这个)

于 2008-11-29T10:08:50.667 回答