You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Django时出现Site matching query错误及/login路径报错如何解决?

报错信息

Error: DoesNotExist at /login/
Site matching query does not exist.

产生原因

  • 项目settings.py中已注册django.contrib.sites应用并配置了SITE_ID参数,但当前项目数据库中不存在与该SITE_ID值匹配的站点记录
  • 登录逻辑依赖Sites框架读取当前站点配置,查询不到对应记录就会抛出该异常

修复方案

方案1:项目无需使用Sites框架时使用

直接修改settings.py配置:

  • 删除INSTALLED_APPS列表中的django.contrib.sites条目
  • 删除全局配置中的SITE_ID = xxx整行代码
  • 重启Django服务即可恢复访问

方案2:项目需要使用Sites框架时使用

按以下步骤操作:

  1. 先执行迁移确保Sites相关表已创建:
    python manage.py migrate
  2. 进入Django shell添加匹配的站点记录:
    执行python manage.py shell进入交互环境,依次输入以下代码:
from django.contrib.sites.models import Site
# 填入的id需要和settings.py中SITE_ID的配置值保持一致,默认配置值为1
Site.objects.create(id=1, domain='127.0.0.1:8000', name='本地开发环境')

如果不清楚已有的站点记录,可以在shell中执行查询语句确认:
print(Site.objects.values_list('id', 'domain', 'name'))
将settings.py中的SITE_ID修改为查询结果中存在的id值即可。
3. 重启Django服务,重新访问/login路径验证问题已解决。

内容的提问来源于stack exchange,提问作者Владислава Черкасова

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:36:05