如果你不想(或不能)创建自定义的用户模型,这里有一个简单的解决办法:只要覆盖rest_framework_social_oauth2.views.TokenView
这样的:
from django.contrib.auth import get_user_model
import rest_framework_social_oauth2.views
class TokenView(rest_framework_social_oauth2.views.TokenView):
def create_token_response(self, request):
email = request.POST.pop('email', None)
if email:
username = get_user_model().objects.filter(email=email[0]).values_list('username', flat=True).last()
request.POST['username'] = username
return super(TokenView, self).create_token_response(request)
然后,在你urls.conf
将此自定义视图连接到oauth/token
图案,例如:
urlpatterns = [
url(r'^oauth/token', my_auth.TokenView.as_view()), # The customized TokenView
url(r'^oauth/', include('rest_framework_social_oauth2.urls')), # Original URLs
]
django中的新增功能1.11。有点晚了,但很高兴知道,谢谢! – Michael