【发布时间】:2016-11-14 18:40:46
【问题描述】:
我的自定义注册 api
from rest_framework import viewsets
from rest_framework import serializers
class SignupSerializer(serializers.Serializer):
email = serializers.EmailField(required=True)
password = serializers.CharField(required=True, write_only=True)
def validate_email(self, val):
try:
User.objects.get(username=val)
raise serializers.ValidationError("Email-ID already Exist")
except User.DoesNotExist:
return val
class SignupView(viewsets.ModelViewSet):
serializer_class = SignupSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
data = serializer.data
email = data.get('email')
password = data.get('password')
u = User(email=email, username=email)
u.set_password(password)
u.save()
data = {
'message': 'Successfully Created!',
'data': {'id': u.id, 'email': email},
}
return Response(data)
Toekn 获取 api
from rest_framework.authtoken import views
urlpatterns = [
url(r'^api-token-auth/', views.obtain_auth_token),
]
当我点击signup api 时,它返回成功响应,我的意思是
{ 'message': '创建成功!', '数据':{'id':1,'电子邮件':'xyz@gmail.com'} }
但是当我尝试使用上述令牌 api 为该用户生成/获取令牌时,它显示 ..invalid credentials?
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}
但是,如果我使用管理命令 createsuperuser 创建用户并使用相同的 api 来获取令牌,它可以工作吗?
注册 api 有什么问题吗?
【问题讨论】:
-
您是否正在为用户 Token.objects.create(user=...) 分配令牌?你能检查你的用户在数据库中是否有关联的令牌吗?如果没有,那么你必须,如果你想使用 TokenAuthentication。
标签: django django-models django-views django-rest-framework