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

Django allauth报错:is_safe_url()收到意外关键字参数'allowed_hosts'

解决Django allauth Facebook登录时的TypeError: is_safe_url() got an unexpected keyword argument 'allowed_hosts'

这个问题我之前配置Django社交登录时也踩过坑,核心原因是Django版本与django-allauth版本不兼容。具体来说:

Django 4.0+ 对django.utils.http.is_safe_url()函数的参数做了修改,移除了allowed_hosts这个关键字参数;而旧版本的django-allauth(比如0.49.x及更早)仍然在调用这个函数时传递allowed_hosts,从而触发类型错误。

下面是具体的解决步骤:

1. 先确认当前版本

首先检查你使用的Django和django-allauth版本,执行以下命令:

pip list | grep -E "Django|django-allauth"

如果你的Django版本是4.0+,但django-allauth版本低于0.50.0,那就是版本不匹配的问题。

2. 升级django-allauth到兼容版本

这是最直接的解决方案,执行升级命令:

pip install --upgrade django-allauth

升级完成后,重启你的Django服务器,再尝试Facebook登录,应该就能解决这个错误。

3. 额外检查(可选)

如果升级后仍然有问题,可以确认以下配置是否正确:

  • 确保settings.py中的ALLOWED_HOSTS包含localhost(比如ALLOWED_HOSTS = ['localhost', '127.0.0.1'])
  • 检查SOCIALACCOUNT_PROVIDERS里的Facebook配置是否正确,比如APP ID、SECRET是否填写无误,回调URL是否和Facebook开发者平台的设置一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:18:33