【问题标题】:what is the use of SITE_ID settings in django?django 中 SITE_ID 设置的用途是什么?
【发布时间】:2014-08-07 20:10:14
【问题描述】:

当我在做平面教程时,我收到了SITE_ID 未设置的错误。我在设置文件中插入了SITE_ID=1,一切正常。但我不知道这实际上意味着什么。

我阅读了django docs。但我并不完全清楚它的用途。 我什么时候会使用 SITE_ID=2 之类的东西。

同样,我在代码中使用了以下 sn-p,但实际上并不知道它的作用:

current_site=Site.objects.get_current()

我认为这与SITE_ID 有关,但可能不是。

一些例子来说明SITE_ID 可以采用不同于 1 的值。

【问题讨论】:

    标签: django django-sites


    【解决方案1】:

    From documentation:

    SITE_ID 默认值:未定义

    django_site 数据库表中当前站点的 ID,整数形式。这是为了让应用程序数据可以连接到特定站点,并且单个数据库可以管理多个站点的内容。

    【讨论】:

      【解决方案2】:

      如果您在多个站点上使用您的代码,或者如果您与另一个站点共享一个数据库,这将很有帮助。来自the documentation的例子:

      from django.db import models
      from django.contrib.sites.models import Site
      from django.contrib.sites.managers import CurrentSiteManager
      
      class Photo(models.Model):
          photo = models.FileField(upload_to='/home/photos')
          photographer_name = models.CharField(max_length=100)
          site = models.ForeignKey(Site)
          objects = models.Manager()
          on_site = CurrentSiteManager()
      

      使用此模型,Photo.objects.all() 将返回数据库中的所有照片对象,但Photo.on_site.all() 将根据 SITE_ID 设置仅返回与当前站点关联的照片对象。

      换句话说,这两个语句是等价的:

      Photo.objects.filter(site=settings.SITE_ID)
      Photo.on_site.all()
      

      【讨论】:

      • 如何设置哪个SITE_ID对应哪个站点。例如1 对应于example.com2 对应于tutorial.com
      • @brainstorm 每个站点都可能有自己的settings.py 设置位置。
      猜你喜欢
      • 2014-10-17
      • 2020-07-16
      • 2015-12-24
      • 2020-07-29
      • 2017-12-19
      • 2012-10-05
      • 2019-08-18
      • 1970-01-01
      • 2012-06-03
      相关资源
      最近更新 更多