0

对 Django 来说是全新的。我们有一个使用 django 0.96x 的遗留 django 项目,它执行身份验证、ldap 等,而且它非常复杂,所以我们不想重写该代码。

我们想添加一个论坛解决方案(现成的),但到目前为止我看到的所有解决方案都需要 django 1.x

我正在尝试弄清楚如何使其正常工作,并将其范围缩小到以下内容:

  1. 使用适用于 django 0.96 的旧论坛解决方案(是否存在?)
  2. 尝试修补论坛解决方案以使其与 0.96“向后兼容”(可能是噩梦)
  3. 使用两个不同的 djangos:0.96 和 1.x 并且(因为我们使用 Apache w/mod_python)有两个不同的 Location 指令;为每个适当调整 PYTHONPATH(或使用 virtualenv 等)

但是选项#3 会起作用吗?我不太了解 django.contrib.auth 和朋友的工作方式,所以如果我运行两个不同版本的 django,用户会保持登录状态吗?我没有提到尝试修补我们的 0.96 项目以将其带到 1.x,但我们真的没有时间这样做。

有什么建议么?

4

3 回答 3

1

这是可能的,但执行选项#3 可能会非常痛苦。

选项 4 怎么样:咬紧牙关升级到 Django 1.1.1。我在几个 0.97pre 网站上完成了这项工作,所花费的时间比我想象的要少。最大的痛苦是处理管理事务。我们没有使用单独的admin.py文件,而是将 Admin 类直接放在 Model 类下面。

我将 Mercurial 用于我的 DVCS,我只是克隆、破解、合并,然后它就可以工作了。每个站点大约需要 3-5 个小时,其中包括一些自定义模板标签修改。

于 2010-01-07T17:53:18.507 回答
0

使用会话存储用户的登录状态。据我通过比较主干与 0.96 源可以看出,会话以相同的方式提交到 cookie,并且身份验证以相同的方式存储用户 ID 和后端,因此只要两个应用程序使用相同的会话存储和在同一个域上,它应该可以工作。(为了安全起见,如果后端逻辑发生变化,我不会使用安全 cookie - 我没有检查那部分。)

但是,0.96 没有像现代 Django 那样具有可插入会话存储。可能,要让当前版本的 Django 与您的 0.96 会话一起工作,您需要为当前 Django 编写一个会话后端,该后端连接到 0.96 数据库并在那里操作会话。不过,我不确定这会有多好。

于 2010-01-07T17:47:06.053 回答
0

可以将 Django 0.96 表公开到 1.1 - 您可以使用包裹在数据库视图周围的非托管模型。换句话说,您发出:

CREATE VIEW auth_user AS SELECT * from django096db.auth_user; (以及其他表的类似 cmd)

然后你有 Django 1.1 与 0.96 同步(假设 0.96 表与 1.1 兼容,我没有检查过)。

于 2010-01-08T17:03:51.890 回答