代码之家  ›  专栏  ›  技术社区  ›  Daniel Rhoden

如何本地测试django的sites框架

  •  9
  • Daniel Rhoden  · 技术社区  · 15 年前

    Django有 sites framework 从单个django安装支持多个网站托管。

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


    我知道中间件基于请求域的查找/缓存设置settings.site_id值。


    恩迪斯

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

    如何在开发期间本地查看我的不同站点?

    3 回复  |  直到 8 年前
        1
  •  18
  •   superluminary    14 年前

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

    从现在开始运行django开发服务器时,请指定 --settings 告诉django要运行哪个站点的选项。

    例如(假设您有两个设置文件-settings\u first.py和settings\u 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/

        2
  •  3
  •   Gregor Müllegger    15 年前

    也许你被文件误导了。你写道:

    我知道中间件基于请求域的查找/缓存设置settings.site_id值。

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

    这个 sites 应用程序的目的是填补(在我看来)罕见的情况,你想有多个网站与同一个数据库在后台。这允许您在不同的站点上发布相同的文章,但仍然具有某些模型仅适用于单个站点的灵活性。

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

    如果要使用同一数据库开发多个站点(并使用站点框架),则每个项目必须具有不同的 锡特伊德 但数据库设置相同。价值观 锡特伊德 在大多数情况下,开发机器上的每个项目都与生产服务器相同。

        3
  •  0
  •   Uysrc    14 年前

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