2010-01-07 83 views
0

django的全新品牌。我们有一个使用django 0.96x的遗留django项目,它执行身份验证,ldap等,它很相关,所以我们不想重写那些代码。运行不同的Django版本但共享身份验证

我们要添加一个论坛溶液(现成的),但所有我见过的那些至今需要的Django 1.x的

我试图找出如何得到这个工作,我“已经把范围缩小到以下几点:

  1. 使用旧的论坛解决方案,工程瓦特/ Django的0.96(这是否存在?)
  2. 尝试修补论坛解决方案,以使其‘向后兼容’0.96 (可能的噩梦)
  3. 使用两种不同的djangos:0.96和1.xa nd(因为我们使用Apache w/mod_python)有两个不同的位置指令;调整PYTHONPATH适当的每个(或使用virtualenv等)

但将选项#3甚至工作?我不太了解django.contrib.auth和朋友如何工作,因此如果我运行两个不同版本的django,用户是否仍然登录?我没有提到试图修补我们的0.96项目以使其达到1.x,但我们没有时间这样做。

有什么建议吗?

回答

1

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

选项4如何:咬紧牙关并升级到Django 1.1.1。我用0.97pre网站做了这个,花了比我想象的要少的时间。最大的困难是处理管理员的事情。我们只需将Admin类直接放在Model类的下面,而不是单独使用admin.py文件。

我为我的DVCS使用Mercurial,并且我只是克隆,黑客入侵,合并并且工作。每个站点花费大约3-5小时,并且包括一些自定义模板标记消除。

+0

是的,我们可能别无选择,只能这样做;-) – Rob 2010-01-07 18:59:42

0

使用会话存储用户的登录状态。据我所知,通过将trunk与0.96源进行比较,会话以同样的方式提交给cookie,并且auth以相同的方式存储用户ID和后端,只要这两个应用使用相同的会话存储和在同一个域上,它应该工作。 (为了安全起见,我不会使用安全cookie,以防后端逻辑发生变化 - 我没有查看该部分。)

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

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兼容,我没有检查过)。