あなたが望む結果を得るには、rest_framework.authtoken.views.ObtainAuthToken.post
を上書きすることができます。
myappに/ views.py
from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
from rest_framework.response import Response
class CustomObtainAuthToken(ObtainAuthToken):
def post(self, request, *args, **kwargs):
response = super(CustomObtainAuthToken, self).post(request, *args, **kwargs)
token = Token.objects.get(key=response.data['token'])
return Response({'token': token.key, 'id': token.user_id})
myappに/ urls.py
from django.conf.urls import url
from .views import CustomObtainAuthToken
urlpatterns = [
url(r'^authenticate/', CustomObtainAuthToken.as_view()),
]
サンプル
$ http :8000/authenticate/ username=someuser password=secretpassword
HTTP/1.0 200 OK
Allow: POST, OPTIONS
Content-Language: en
Content-Type: application/json
Date: Tue, 22 Mar 2017 18:30:10 GMT
Server: WSGIServer/0.2 CPython/3.5.1
Vary: Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
{
"id": 16,
"token": "82e0bc9980a6b2c9a70969b0f8dc974418dda399"
}
アイデア彼の結果ObtainAuthTokenビュー・クラスのpostメソッドをオーバーライドする必要があります。ここでは、親クラスを呼び出してトークンを取得し、そのトークンを参照して関連付けられたユーザーIDを検索します。
希望に役立ちます。
はい、助かりました。これはまさに私が達成したかったものです。私はこれが正しい習慣を持つ一貫した解決策であることを願っています。 – wahtdbogh