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

无法访问Django Admin面板,出现Site matching query does not exist错误

问题描述

配置Google OAuth登录功能(基于django-allauth)并执行迁移后,访问/admin/login/时触发如下错误,网站其余功能正常,此前Admin面板运行无异常:

DoesNotExist at /admin/login/
Site matching query does not exist.

相关配置信息:

  • settings.py 认证后端配置:
AUTHENTICATION_BACKENDS = (
    "django.contrib.auth.backends.ModelBackend",
    "allauth.account.auth_backends.AuthenticationBackend"
)
  • urls.py 路由配置:
urlpatterns = [
    path('admin/', admin.site.urls),
    path("", include("blog.urls"), name="blog-urls"),
    path('summernote/', include('django_summernote.urls')),
    path("accounts/", include("allauth.urls")),
    path("", include("users.urls"))
]
解决方案

该错误源于django-allauth依赖django.contrib.sites应用,但数据库的django_site表中无有效记录。可通过以下方法解决:

  • 方法一:配置SITE_ID并确认迁移
    在settings.py中添加或确认以下配置项:

    SITE_ID = 1
    

    执行迁移命令确保django.contrib.sites的迁移已完成:

    python manage.py migrate sites
    

    默认情况下,sites应用的初始迁移会创建ID为1的Site实例,设置SITE_ID=1即可让allauth定位到该记录。

  • 方法二:手动创建Site实例
    启动Django Shell:

    python manage.py shell
    

    在Shell中执行代码创建Site记录(替换端口为你的本地预览端口):

    from django.contrib.sites.models import Site
    Site.objects.create(domain='localhost:8000', name='localhost:8000')
    
  • 方法三:通过Admin面板创建(临时可行时)
    若能临时登录Admin(如创建超级用户后直接访问/admin/sites/site/add/),手动添加Site记录,填写对应访问域名和站点名称即可。

内容的提问来源于stack exchange,提问作者Laurie Crean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:15:12