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

bra*_*orm 5 django django-sites

当我在做平面教程时,我因SITE_ID没有设置而收到错误.我插入SITE_ID=1设置文件,一切正常.但我不知道这究竟意味着什么.

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

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

current_site=Site.objects.get_current()
Run Code Online (Sandbox Code Playgroud)

我认为这与某些事情有关,SITE_ID但可能不是.

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

Ban*_*ana 5

如果您在多个站点上使用您的代码,或者您与另一个站点共享一个数据库,这会很有帮助。文档中的一个示例:

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()
Run Code Online (Sandbox Code Playgroud)

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

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

Photo.objects.filter(site=settings.SITE_ID)
Photo.on_site.all()
Run Code Online (Sandbox Code Playgroud)


elm*_*ylp 0

来自文档

SITE_ID 默认值:未定义

django_site 数据库表中当前站点的 ID(整数)。使用此功能以便应用程序数据可以挂接到特定站点,并且单个数据库可以管理多个站点的内容。