DRF集成GitHub登录遇404错误:无法跳转认证页面求助
解决Django Rest Framework集成GitHub认证时的404(Backend not found)问题
问题诊断
从错误信息和代码来看,核心问题是模板中调用认证后端时使用了错误的后端名称,导致social_django无法识别对应的OAuth2后端,从而抛出404错误。
具体修改步骤
1. 修正模板中的认证后端名称
模板oauth.html里的URL标签使用了github-oauth2作为后端标识,但social_core.backends.github.GithubOAuth2对应的正确标识是github。修改模板内容:
<a href="{% url "social:begin" "github" %}">Github</a>
2. 确认核心配置正确性
检查settings.py中的关键配置是否到位:
INSTALLED_APPS已包含social_djangoAUTHENTICATION_BACKENDS已添加social_core.backends.github.GithubOAuth2- 已正确配置
SOCIAL_AUTH_GITHUB_KEY和SOCIAL_AUTH_GITHUB_SECRET
3. 确认URL配置有效性
当前urls.py中已正确引入social_django的URL规则,无需修改:
router = SimpleRouter() router.register(r'book', BookViewSet) urlpatterns = [ path("admin/", admin.site.urls), re_path('', include('social_django.urls', namespace='social')), path('auth/', auth) ] urlpatterns += router.urls
错误信息回顾
页面未找到(404)
Backend not found
请求方法: GET
请求URL: http://127.0.0.1:8000/login/github-oauth2/
引发者: social_django.views.auth
使用books.urls中定义的URLconf,Django按以下顺序尝试了这些URL模式:
admin/
login/str:backend/ [name='begin']
当前路径login/github-oauth2/匹配了最后一个模式。
内容的提问来源于stack exchange,提问作者I V
相关产品推荐
相关产品推荐

