2016-04-07 20 views
0

başarısız API düzgün çalışıyor. daha önce iken ben her zaman tepki altınaKimlik Ben o çalışıyordu giriş ve kayıt API için dinlenme Api yaratan ama ani Giriş API tüm</p> <p><code>authenticate(username=username, password=password)</code></p> <p>çalışmıyor hep kayıt sırasında hiçbiri dönüyor, Django öğreniyorum Django kalan çerçeve

{ 
    "message": "Login Unsuccessful", 
    "result": "error" 
} 

aşağıda giriş kodudur

@api_view(['POST']) 
def login(requset): 
    """ 
    This api for user login 
    --- 
    parameters: 
    - name: username 
     description: username for login 
     required: true 
     type: string 
     paramType: form 
    - name: password 
     required: true 
     type: string 
     paramType: form 
    consumes: 
     - application/json 
     - application/xml 
    produces: 
     - application/json 
     - application/xml 
    """ 
    username = requset.data.get('username') 
    print(username) 
    password = requset.data.get('password') 
    print(password) 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     response_data = {} 
     response_data['result'] = 'success' 
     response_data['message'] = 'Login successful' 
     # response_data['auth_token'] = auth_token 

     return HttpResponse(json.dumps(response_data), 
          content_type="application/json") 
    else: 
     response_data = {} 
     response_data['result'] = 'error' 
     response_data['message'] = 'Login Unsuccessful' 
     return HttpResponse(json.dumps(response_data), 
            content_type="application/json") 

Bu userserializer

class UserSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = User 
     fields = ('id','username','email','password','is_active') 

için kayıt için kod

class Register(generics.CreateAPIView): 
    """ 
    Your docs 
    --- 
    type: 
     username: 
     required: true 
     type: string 
     password: 
     required: true 
     type: url 
     email: 
     required: true 
     type: string 

    serializer: .serializers.UserSerializer 
    omit_serializer: false 

    parameters_strategy: merge 
    omit_parameters: 
     - path 
    parameters: 
     - name: username 
      description: Username for registration purpose 
      required: true 
      type: string 
      paramType: form 
     - name: password 
      description: * password for registration purpose 
      required: true 
      type: string 
      paramType: form 
     - name: email 
      description: * email for registration purpose 
      required: true 
      type: string 
      paramType: form 

    responseMessages: 
     - code: 401 
      message: Not authenticated 

    consumes: 
     - application/json 
     - application/xml 
    produces: 
     - application/json 
     - application/xml 
    """ 

    #first define query set 
    queryset = User.objects.all() 
    #define model 
    model = User 
    #define serializer 
    serializer_class = UserSerializer 

Kod olsun uygun geliyor. Herhangi bir yardım çok takdir edilecektir.

+0

gibi bir şey yapmak gerekir. – ofnowhere

+0

Yani, kaydınızın sorun olduğunu onaylayabilir misiniz? Kayıt olduktan sonra yeni Kullanıcıyı yönetici sayfalarında bulabilir misiniz? – dkarchmer

cevap

0

Açıklamalarda belirtildiği gibi, bir kullanıcı seri hale getiricide parola oluşturduysanız, parolanız Django'nun bir karma olmasını beklediği düz metin biçiminde kaydedilecektir. Yani Parola karma ve sonra kontrol edecektir, bu (düz metin olarak kaydedilir) Parola karma olmayacak kayıt ve kimlik doğrulaması seri hale kullanırken bu

 
class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('id','username','email','password','is_active') 

    def create(self, validated_data): 
     user = super().create(validated_data) 
     if 'password' in validated_data: 
      user.set_password(validated_data['password']) 
      user.save() 
     return user 
+0

Teşekkürler @Mad Wombat – CodingRat