【问题标题】:How do you setup a Django project with different sites using the same data?如何使用相同的数据设置具有不同站点的 Django 项目?
【发布时间】:2010-11-13 04:13:41
【问题描述】:

我目前正在查看 Django 站点的文档:

http://docs.djangoproject.com/en/dev/ref/contrib/sites/#ref-contrib-sites

它解释了如何将内容与多个网站相关联。使用的示例是 LJWorld.com 和 Lawrence.com。

上面的 Django 项目结构是什么样的?每个网站是否都是独立的应用程序,例如:

project/
    manage.py
    settings.py
    urls.py
    ljworld/
        models.py
        views.py
    lawrence/
        models.py
        views.py

如果 ljworld 有SITE_ID=1 而lawrence 有SITE_ID=2,是否必须在ljworld/settings.pylawrence/settings.py 中显式设置SITE_ID 变量?

你如何运行 ljworld 或 lawrence 的开发服务器?

更新:

我在上面使用了两个共享内容的网站。如果有 n 个不同的站点共享相同的内容,应该怎么做?我真的需要在 n 个不同的服务器上连接到同一个数据库服务器的 n 个不同的 Django 项目吗?

此外,如果我需要更改 settings.py 会影响所有这些网站,那么手动更改每个文件将非常繁琐。

【问题讨论】:

    标签: django


    【解决方案1】:

    不,每个网站都不是一个独立的应用程序;每个站点都是一个独立的项目。整个想法是让不同的项目(完全或部分)共享内容。所以你可能有这样的结构:

    ljworld/
        manage.py
        settings.py
        urls.py
        ljworld_specific_app1/
        ...
    lawrence/
        manage.py
        settings.py
        urls.py
        lawrence_specific_app1/
    

    您通常会使用两台 Web 服务器来为项目提供服务 - 尽管通常两者都会引用同一个数据库服务器。当然,您也可以拥有在两个项目之间共享的应用程序 - 只需将它们保存在服务器的 PYTHONPATH 中的某个位置即可。

    编辑:

    “两个 Web 服务器”当然并不一定意味着两个物理上不同的服务器。它们很可能是在同一个 Web 服务器实例下运行的两个虚拟主机 - 哎呀,您甚至可以将这两个项目映射到同一个虚拟主机下的两个不同目录。

    对于共享设置,您可以使用与共享应用相同的技术。有一个 global_settings 模块,其中包含 PYTHONPATH 某处可用的共享设置,并从每个 settings.py 导入它。

    而且,如果您想要一些真正 hackish 的东西,您甚至可以放弃所有不同的项目,只使用一个并创建一个可以即时更改设置的中间件。但我建议不要这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2021-12-03
      • 2020-12-13
      • 1970-01-01
      • 2011-01-14
      • 2018-01-30
      • 1970-01-01
      相关资源
      最近更新 更多