Django allauth出现Not Found: /accounts/facebook/login错误求助
看起来你遇到的是典型的路由配置缺失或者环境同步问题,毕竟之前笔记本上能正常运行,说明核心逻辑没问题,台式机这边大概率是配置没同步到位或者依赖环境有差异。我给你列几个最关键的排查方向:
1. 确认项目根路由已正确引入allauth的accounts路径
先检查项目根目录的urls.py,必须确保allauth的路由被正确包含,代码应该类似这样:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('accounts/', include('allauth.urls')), # 这一行是核心,不能缺失 ]
如果这行漏写,Django根本找不到/accounts/facebook/login这个路径,直接返回404。
2. 检查INSTALLED_APPS里的allauth相关应用是否齐全
打开settings.py,确认INSTALLED_APPS包含allauth核心模块和Facebook提供者:
INSTALLED_APPS = [ # ... 其他默认应用 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.facebook', # Facebook登录必须加这个 ]
要是没加allauth.socialaccount.providers.facebook,allauth不会生成Facebook相关的登录路由。
3. 验证SITE_ID配置与后台站点设置
在settings.py里必须设置正确的SITE_ID:
SITE_ID = 1
同时登录Django后台(/admin/sites/site/),确认该站点的域名和你台式机本地运行的域名一致(比如localhost:8000或127.0.0.1:8000),Facebook应用的回调地址也要和这个域名匹配。
4. 核对虚拟环境的依赖版本
有可能台式机的虚拟环境里allauth版本和笔记本不一致,或者依赖没装全。试试卸载重装最新版:
pip uninstall django-allauth pip install django-allauth
装完后一定要重启Django服务器,依赖更新通常需要重启才能生效。
5. 清理缓存与重新迁移(极端情况)
如果上面都没问题,试试清理Django缓存并重新执行迁移:
python manage.py clearcache python manage.py makemigrations python manage.py migrate
旧缓存或未同步的迁移偶尔会导致路由加载异常。
最后验证路由列表
你可以运行这个命令查看当前Django所有已注册的路由,确认/accounts/facebook/login是否存在:
python manage.py show_urls
如果列表里找不到这个路径,那肯定是前面的配置有问题;如果能找到,再核对下Facebook应用的回调地址是否为http://localhost:8000/accounts/facebook/login/callback/,确保没有拼写错误。
内容的提问来源于stack exchange,提问作者Ahtisham




