如何在Django中查看站点ID?解决Site.DoesNotExist报错及后台加载问题
问题解决指南
一、查看所有站点ID的方法
在项目根目录下打开终端,执行命令启动Django Shell:
python manage.py shell
进入Shell后,执行以下代码查询所有站点的ID和域名:
from django.contrib.sites.models import Site # 遍历所有站点并输出信息 for site in Site.objects.all(): print(f"站点ID: {site.id}, 域名: {site.domain}")
二、报错原因分析
你遇到的django.contrib.sites.models.Site.DoesNotExist错误,核心原因是数据库中不存在ID为2的站点记录——虽然你新增了站点,但可能新增的站点ID并非2,或者记录未正确写入数据库。Admin面板无法加载也是因为settings.py中配置的SITE_ID指向了一个不存在的站点,导致依赖站点的功能无法正常运行。
三、解决步骤
确认数据库中的站点实际情况
先用上面的Shell命令查看所有站点,确认是否存在ID为2的站点。匹配SITE_ID与实际站点ID
- 如果数据库里没有ID为2的站点,直接把
settings.py中的SITE_ID修改为数据库中已存在的站点ID(比如新增站点的实际ID)。 - 如果一定要使用ID=2,可通过Shell手动创建或修改站点:
# 方式1:直接创建ID为2的站点 Site.objects.create(id=2, domain='xx1.xxx.com', name='xx1.xxx.com') # 方式2:修改已有站点的ID为2(假设新增站点的ID是3) target_site = Site.objects.get(id=3) target_site.id = 2 target_site.save()
- 如果数据库里没有ID为2的站点,直接把
确保配置生效
修改完成后,执行迁移命令同步数据库:python manage.py migrate最后重启Django开发服务器,让新配置生效。
内容的提问来源于stack exchange,提问作者Vinura Jayalath
相关产品推荐
相关产品推荐

