11

Django 具有站点框架来支持从单个 Django 安装中托管多个网站。

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


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


结束编辑

但是在本地测试时,我在http://127.0.0.1:8000/,而不是http://my-actual-domain.com/

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

4

3 回答 3

19

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

从现在开始,当运行 Django 开发服务器时,指定--settings选项来告诉 Django 运行哪个站点。

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

manage.py runserver --settings settings_first

将运行第一个站点,并且

manage.py runserver --settings settings_second

将使您可以访问第二个站点。

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

manage.py runserver 8001 --settings settings_first

manage.py runserver 8002 --settings settings_second

上述命令(在两个不同的控制台上运行)将使第一个网站可以在http://127.0.0.1:8001/下访问,第二个网站可以在http://127.0.0.1:8002/下访问

于 2010-02-08T19:55:07.583 回答
4

也许您被文档误导了。你写了:

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

不是这种情况。它完全相反。Django 使用 settings.SITE_ID 值在数据库中查找正确的 Site 对象。这将返回您首选的域名和站点名称。

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

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

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

于 2010-02-08T23:00:55.620 回答
-1

仅供参考 - 我今天发布了 django-dynamicsites,它有解决这个问题的设施 - https://bitbucket.org/uysrc/django-dynamicsites/src

于 2011-03-24T16:35:48.540 回答