django在一个域上为一个代码库提供多个商店

时间:2010-05-07 07:45:53

标签: django routing e-commerce

我是django和python的新手,我正试图弄清楚如何修改现有应用以通过单个域运行多个商店。

Django的网站中间件在这种特殊情况下似乎不合适,因为它管理不同的域,而不是通过同一域运行的网站,例如:domain.com/uk domain.com/us domain.com/es等。

每个网站都需要翻译内容 - 以及次要模板更改。解决方案需要足够灵活,以便轻松修改模板。

表格也需要改变一点,例如字段的微小差异和每个国家特定商店的验证。

我正在考虑以下几点作为解决方案,并希望得到有经验的django-ers的一些反馈:

简而言之:相同的代码库,但是单独的国家/地区特定网址文件,单独的模板和单独的数据库

  1. 创建一个执行IP本地化的中间件类,根据URL确定国家/地区并创建数据库连接,例如: / au /将指向au特定数据库等。

  2. root中的
  3. urls.py包含指向单独的国家/地区特定路由文件的路由,e..g

  4. (R '^ AU /',包括( 'urls_au')), (R '^ ES /',包括( 'urls_es')),

    1. 使用单个模板目录但在该目录中具有本地化的目录结构,例如/base.html和/uk/base.html并编写一个自定义模板加载器,首先查找本地模板。 (或为每个商店设置单独的目录,并在中间件中设置模板目录路径)

    2. 使用django国际化来管理整个

    3. 中的翻译字符串
    4. 表格和型号略有不同(例如ZA有ID字段,法国有'门密码'和'楼层'等)我不确定如何处理这些变化但我怀疑表格将包含所有字段但允许空值和模型将包含所有字段但允许空值。每个商店的表格都会略有修改。

    5. 无论如何,我希望得到关于实现这种多站点解决方案的最佳方式的反馈。看起来它会工作,但感觉有点“hackish”,我想知道是否有更优雅的方式让这个解决方案工作。

      谢谢, imanc

2 个答案:

答案 0 :(得分:1)

没有理由不能在同一域下的不同子目录中提供多个Django安装的站点框架。

答案 1 :(得分:0)

好的我已经做了一些进一步的挖掘,似乎Django站点框架不适合同一个域,但路径不同:

www.mydomain.com/uk
www.mydomain.com/au

另外两个选项是apache / wsgi设置,其中为每个子目录引用单独的wsgi和settings.py。这看起来有点麻烦;我不想在每次部署新商店时重新配置apache。此外,它还使维护本地开发,在线开发,登台和现场版本的网站更加麻烦。

我认为在这种情况下,最好的解决方案是查看一个跟踪国家/地区代码并以某种方式更改数据库设置和root urls.py的中间件类。然后,每个应用程序都必须知道其当前的基本URL,例如表单操作和链接等。