django中SITE_ID设置的用途是什么?

时间:2014-06-17 17:42:39

标签: django django-sites

当我在进行平面教程时,我收到错误SITE_ID未设置。我在设置文件中插入SITE_ID=1,一切正常。但我不知道这究竟意味着什么。

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

在同一个说明中,我在代码中使用了以下代码片段而实际上并不知道它的作用:

current_site=Site.objects.get_current()

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

一些示例来说明SITE_ID可能采用不同于1的值会有所帮助。

2 个答案:

答案 0 :(得分:4)

您可以在多个站点上使用代码,或者与其他站点共享数据库。来自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对象,但Photo.on_site.all()将仅返回与当前站点关联的Photo对象,具体取决于SITE_ID设置。

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

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

答案 1 :(得分:0)

From documentation

SITE_ID 默认值:未定义

django_site数据库表中当前站点的ID(整数)。这样可以使应用程序数据挂钩到特定站点,单个数据库可以管理多个站点的内容。