我的自定义注册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 get api
from rest_framework.authtoken import views
urlpatterns = [
url(r'^api-token-auth/', views.obtain_auth_token),
]当我点击signup api时,它返回成功响应,我的意思是
{‘消息’:‘成功创建!’,‘数据’:{'id':1,‘电子邮件’:'xyz@gmail.com'} }
但是,当我试图使用上面的令牌api为这个用户生成/获取令牌时,它会说..invalid凭据吗?
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}但是,如果我使用管理命令创建用户并使用相同的api获取令牌,那么它可以工作吗?
注册api有什么问题吗?
发布于 2016-07-13 10:42:32
您应该从序列化程序中删除write_only=True。这样就可以修正错误了。
发布于 2016-07-12 15:31:29
错误消息实际上告诉您,您的请求无法到达视图,这是因为其中一个中间件引发了错误。
最简单(但不太安全)解决方案是在成功注册时返回API令牌,或者添加另一个带有登录(返回令牌)的视图。
要想得到明确的答案,您需要提供更多信息,比如身份验证后端的配置。
您可以在这里找到关于DRF http://www.django-rest-framework.org/api-guide/authentication/#how-authentication-is-determined中身份验证的更多信息。
https://stackoverflow.com/questions/38330282
复制相似问题