我正在寻找一种“最佳实践”方式,为我的Django安装创建一个具有多个站点的特定结构。子域。
我在考虑以下事项:
/静态 /全球 - 全球js - 全球css, - 等.. /具体 - 具体的js - 等..
/ django的 - 包含所有特定的django文件 /应用 - 包含所有应用程序 / site1的 - .py文件 - 特定应用程序(链接到/ django / apps / app) - 其他特定于站点的文件 /站点2 - .py文件 - 特定应用程序(链接到/ django / apps / app) - 其他特定于站点的文件 /subdomain.site2 - .py文件 - 特定应用程序(链接到/ django / apps / app) - 其他网站特定文件
我认为以上内容非常合理,保留所有网站,并且以较少的方式也将子域彼此分开。 我知道这是一个'最佳实践',但是一些(关键)建议将不胜感激;)
答案 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/