最佳实践 - Django multisite

时间:2010-12-08 15:09:29

标签: django

我正在寻找一种“最佳实践”方式,为我的Django安装创建一个具有多个站点的特定结构。子域。

我在考虑以下事项:

/静态  /全球     - 全球js     - 全球css,     - 等..  /具体     - 具体的js     - 等..

/ django的   - 包含所有特定的django文件  /应用     - 包含所有应用程序  / site1的     - .py文件     - 特定应用程序(链接到/ django / apps / app)     - 其他特定于站点的文件  /站点2     - .py文件     - 特定应用程序(链接到/ django / apps / app)     - 其他特定于站点的文件    /subdomain.site2       - .py文件       - 特定应用程序(链接到/ django / apps / app)       - 其他网站特定文件

我认为以上内容非常合理,保留所有网站,并且以较少的方式也将子域彼此分开。 我知道这是一个'最佳实践',但是一些(关键)建议将不胜感激;)

1 个答案:

答案 0 :(得分:1)

我认为这取决于您将如何构建和部署多域“网站”。 Django有网站框架:http://docs.djangoproject.com/en/dev/ref/contrib/sites/ 这可以让你实现你提到的“新闻文章分享”。

但是,如果你想让所有人都使用单个进程(使用mod_wsgi,例如每个进程都有一个虚拟主机项),那么部署多域django并不是一件容易的事情,如果你有很多域/这可能会成为问题子域。

对于部署django的标准方式,每个django项目(每个域1个)将拥有自己的 virtualenv (如果他们使用相同的库,则共享一个),以及所有库应用程序将驻留在virtualenv的python路径中。

每个项目都应该是自包含的,因此您可以拥有,例如:

<强> PROJECT1

- coreapps / projectspecificapps ...

- 模板/

- 媒体/

- settings.py

- urls.py

- manage.py

<强>项目2

- coreapps / projectspecificapps ..

- 模板/

- 媒体/

- settings.py

- urls.py

- manage.py

projects 之间共享的任何东西都应该与项目分开,并且应该是它自己的APP,在python路径的任何地方(例如virtualenv内)。

对于许多域/子域......它是一个完全不同的故事。你可以让django使用django中间件处理域名部分(或者可能是wsgi中间件? - 使用wsgi可能有一个有趣的解决方案),你必须使你的应用程序,模板等...域名“知道“某种程度上,这取决于你的具体需求。

http://www.b-list.org/weblog/2006/sep/10/django-tips-laying-out-application/

Django and project/application organization

并查看热门应用以了解它们的使用方式: http://djangopackages.com/