如何使用相同的数据设置不同站点的Django项目?

Thi*_*Lam 1 django

我目前正在查看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
Run Code Online (Sandbox Code Playgroud)

如果ljworld SITE_ID=1和Lawrence有SITE_ID=2,那么SITE_ID变量是否必须明确设置ljworld/settings.py并且lawrence/settings.py

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

更新:

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

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

ogg*_*ggy 6

不,每个网站都不是自己的应用程序; 每个站点都是一个独立的项目.整个想法是使用(完全或部分)共享内容来创建不同的项目.所以你可能有一个结构,如:

ljworld/
    manage.py
    settings.py
    urls.py
    ljworld_specific_app1/
    ...
lawrence/
    manage.py
    settings.py
    urls.py
    lawrence_specific_app1/
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

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

如果你想要一些真正的hackish,你甚至可以放弃所有不同的项目,只使用一个并创建一个可以动态更改设置的中间件.但我会反对它.