Django集成dj-rest-auth谷歌登录报错:AttributeError: module 'BackendApp.views.GoogleLogin' has no attribute 'as_view'
解决
AttributeError: module 'BackendApp.views.GoogleLogin' has no attribute 'as_view'问题 这个错误的根源很明确——你在urls.py里的导入逻辑错了,把整个模块文件当成了模块里的类来引用,自然找不到as_view()方法(这个方法是Django类视图CBV才有的属性)。
具体修复步骤:
- 修正urls.py中的导入语句
你当前的导入是:
from BackendApp.views import GoogleLogin
这行代码实际导入的是BackendApp/views/GoogleLogin.py这个文件模块,而不是模块里的GoogleLogin类。把它改成:
from BackendApp.views.GoogleLogin import GoogleLogin
这样才会正确导入你定义的那个继承了SocialLoginView的类,调用.as_view()就不会报错了。
- 修正回调地址的笔误
看你的GoogleLogin.py里的callback_url有个明显的拼写错误:
callback_url = "http://localhost:8000/accounts/google/login/callbaccontent.comk"
把它改成和你在Google开发者控制台里配置一致的回调地址,比如:
callback_url = "http://localhost:8000/accounts/google/login/callback/"
这个地址不匹配的话,后续谷歌登录流程也会失败。
- 补充SITE_ID配置
因为你在INSTALLED_APPS里加了django.contrib.sites,记得在settings.py里加上:
SITE_ID = 1
这是allauth依赖的核心配置项,缺了会导致社交登录流程抛出异常。
额外验证项:
- 确认你的
GoogleLogin类确实正确继承了SocialLoginView(你的代码里是对的,这个类基于DRF的APIView,自带as_view()方法) - 重启Django开发服务器,确保所有代码修改都生效
- 核对
SOCIALACCOUNT_PROVIDERS里的谷歌应用凭证(client_id、secret)和谷歌开发者控制台里的信息完全一致
内容的提问来源于stack exchange,提问作者m2h9
相关产品推荐
相关产品推荐

