如何本地测试Django';s站点框架

如何本地测试Django';s站点框架,django,django-sites,Django,Django Sites,Django具有从单个Django安装支持多个网站托管的能力 编辑(以下是对系统的错误假设) 我知道中间件根据请求域的查找/缓存设置settings.SITE_ID值 恩迪特 但在本地测试时,我在,而不是 如何在开发过程中本地查看不同的站点?为每个站点创建一个单独的settings.py文件,包括一个适当的站点ID设置。当然,您可以使用import语句在文件之间共享公共设置 从现在开始,在运行Django development server时,指定--settings选项来告诉Django

Django具有从单个Django安装支持多个网站托管的能力

编辑(以下是对系统的错误假设)


我知道中间件根据请求域的查找/缓存设置settings.SITE_ID值


恩迪特

但在本地测试时,我在,而不是


如何在开发过程中本地查看不同的站点?

为每个站点创建一个单独的settings.py文件,包括一个适当的
站点ID
设置。当然,您可以使用
import
语句在文件之间共享公共设置

从现在开始,在运行Django development server时,指定
--settings
选项来告诉Django要运行哪个站点

例如(假设您有两个设置文件-settings_first.py和settings_second.py):

将运行第一个站点,并且

manage.py runserver --settings settings_second
将允许您访问第二个站点

您还可以同时运行它们,指定不同的端口:

manage.py runserver 8001 --settings settings_first

manage.py runserver 8002 --settings settings_second

上述命令(在两个不同的控制台上运行)将使第一个网站在下可访问,而第二个网站在下可访问。可能您被文档误导了。你写道:

我知道中间件根据请求域的查找/缓存设置settings.SITE_ID值

事实并非如此。它的工作原理正好相反。Django使用settings.SITE_ID值在数据库中查找正确的站点对象。这将返回您首选的域名和网站名

sites
应用程序的设计是为了满足(在我看来)一个罕见的用例,即您希望在后台有多个具有相同数据库的站点。这允许您在不同的站点上发布相同的文章,但仍具有灵活性,即某些模型仅适用于单个站点

对于开发多个项目(实际上没有使用sites框架),您不必指定任何特殊的内容。您可以使用默认的
站点ID
设置为
1
。为了利用管理员对网站链接的查看,您可以在开发数据库中将
站点
的域设置为
localhost:8000


如果您想使用同一数据库开发多个站点(并利用站点框架),则每个项目必须具有不同的
站点ID
,但具有相同的数据库设置。大多数情况下,开发机器上每个项目中的
SITE\u ID
的值与生产服务器的值相同。

FYI-我今天发布了django dynamicsites,它有解决此问题的工具-

感谢Gregor。我怀疑我被极大地误导了。我可能会创建中间件来完成我认为Django已经在做的事情,并让它在请求的域位于settings.DEVELOPMENT_服务器中时查找查询字符串属性'site=my-site-1.com',例如:if request.META['SERVER_NAME']in settings.DEVELOPMENT_SERVERS:#在会话中查找并设置站点链接现在已过期。请修复它。链接似乎已断开
manage.py runserver 8001 --settings settings_first

manage.py runserver 8002 --settings settings_second