最佳实践 - Django多站点

4

我目前正在寻找一种“最佳实践”方法来为我的Django安装创建一个特定的结构,其中包括多个站点和子域名。

我考虑了以下内容:

/static
 /global
   - global js
   - global css, 
   - etc..
 /specific
   - specific js
   - etc..

/django
 - contains all specific django files
 /apps
   - contains all the apps 
 /site1
   - .py files
   - specific apps (link to /django/apps/app)
   - other site specific files
 /site2
   - .py files
   - specific apps (link to /django/apps/app)
   - other site specific files
   /subdomain.site2
     - .py files
     - specific apps (link to /django/apps/app)
     - other site specific files

我认为以上做法是相当合理的,保持所有站点以及子域名之间相互独立。 我知道这是一种“最佳实践”,但某些(关键)建议将不胜感激;)

你是否计划从一个域名登录并管理不同站点的事务? - Bernhard Vallant
我不打算从一个域名管理所有的网站。因此,每个网站都必须有一个“管理”页面,但是,“一些”页面可以共享相同的新闻会很好。因为一些页面来自同一家公司,他们希望在所有(或某些)页面上显示一些新闻。这可以通过使用Drupal的SITES功能来实现。但这只是一个很好的功能,当然不是必需的。 - Grezly
1个回答

1

我认为这取决于您如何构建和部署您的多域“站点”。

Django有网站框架:http://docs.djangoproject.com/en/dev/ref/contrib/sites/,可以让您实现您提到的“新闻文章共享”。

但是,如果您希望它们全部使用单个进程(例如,使用mod_wsgi时,每个域名都有一个虚拟主机项),则部署多域django并不容易,并且如果您有许多域名/子域名,则可能会成为问题。

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

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

project1

--coreapps/projectspecificapps...

--templates/

--media/

--settings.py

--urls.py

--manage.py

project2

--coreapps/projectspecificapps..

--templates/

--media/

--settings.py

--urls.py

--manage.py

任何在项目之间共享的东西都应该被分离出来,成为自己的APP,放置在Python路径的任何位置(例如虚拟环境内)。

对于许多域/子域...情况就完全不同了。你可以用Django中间件(或者可能是WSGI中间件?- 也许有一个使用WSGI的有趣解决方案存在)来处理域部分,然后你需要使你的应用程序、模板等“意识到”域,具体取决于你的特定需求。

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

Django和项目/应用程序组织

并查看流行的应用程序以了解它们的使用方式: http://djangopackages.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接