有人能指出我在同一个数据库上使用django.contrib.sites多个视图的好指南吗?

时间:2011-02-25 11:36:01

标签: python django

[警告 - python noob]

我已经阅读了我能找到的内容,并在数据库中使用一个“站点”启动并运行了站点。我不知道从哪里开始。第二个站点的代码的正确文件夹结构是什么?它将重新使用模型(我假设 - DRY),因此可能需要使用相同的应用程序文件夹 - 但文档使用不同的设置文件来讨论它。这是我有点失落的地方。

其次,我喜欢指向如何运行开发服务器以及如何为多个站点运行apache。

提前致谢。

更新:我对网站之间设置不同的地方特别感兴趣 - 例如一个使用身份验证将所有内容放在登录后面,而另一个则不然。根据下面的对话,这是否意味着两个独立的项目?他们使用相同的模型,那么我该如何关注DRY?

我的实际情况如下:

example1.com是一个内部项目管理工具 - 它使用谷歌应用程序身份验证,因此除非您通过公司谷歌帐户进行身份验证,否则您将看不到任何页面。

我想创建example2.com,它是某些开放任务的视图(通过example1.com创建),以便自由职业者可以查看可用的工作并声明它们。他们没有谷歌应用程序帐户,因此example2.com将使用不同的身份验证。

两个共享模型(例如“项目”,“作业”)都需要从同一个数据库中读取。在django实现这一目标的最佳方法是什么?很抱歉,如果不清楚 - 我试图保持问题抽象,但这就是我在原始问题中提到不同设置文件的原因。

2 个答案:

答案 0 :(得分:1)

这是我首选的设置。

Apache(通过mod_wsgi)应该提供example1.com(带有GA身份验证),并引用一些使用您唯一数据库的Django应用程序。

example2.com也应该由同一个Apache(通过mod_wsgi)提供服务,并引用一些使用您唯一数据库的Django应用程序。

example1.com是Apache中的“位置”,它引用了“/var/www/example1/example1.wsgi”文件。此文件与example1.com的应用程序和配置套件的特定example1/settings.py相关联。

example2.com是Apache中的“位置”,它引用了“/var/www/example1/example2.wsgi”文件。此文件与example2.com的应用程序和配置套件的特定example2/settings.py相关联。

一些Django应用程序可能在两个位置之间共享。某些应用程序可能特定于某个位置或另一个位置。

数据库在两个位置之间完全共享。


使用网站

使用与第一个站点相同的代码构建第二个站点。它不是副本或克隆。您有一组使用一个数据库的应用程序。

“网站”是用户看到的内容。 “站点”是您获取数据和使用模板向用户呈现内容的方式的结果。但这都是应用程序的一个项目。

用户感知的“网站”只有一点不同:您放入模型的site密钥。

通常情况下,您可以使用Apache将不同的域名重定向到带有“站点”键的URL。

如果您正在构建多个不共享相同代码的站点,那么您只需要在不同的项目中构建大量应用程序。

具体用例如下:

http://docs.djangoproject.com/en/1.2/ref/contrib/sites/#how-django-uses-the-sites-framework

  

它是用于关联对象的钩子   和特定Web的功能   网站,它是一个举办地   域名和“详细”名称   您的Django支持的网站。

答案 1 :(得分:1)

django不提供您要完成的任务,但可以通过配置服务器来完成。以下是使用mod_wsgimod_python

执行此操作的示例

尽管如此,这有点先进。我建议部署一些简单的django应用程序,然后尝试一下。