2017-12-28 69 views
0

현재 사람들이 직접 등록 할 수있는 REST API를 만들고 있습니다. 그리고 나는 막/복잡한 암호가 얼마나 있어야하는지에 대한 유효성 검사를 작성하려고합니다. 나에게 모델이 이미 설정된 기본 제약 조건을 모방하는 방법이있을 수 있습니까? 거기 있니? serializer.py에 대한Django Rest Framework - 기본 유효성 검사를 모방 한 기본 사용자 모델 유효성 검사를 Serializer에 제공

내 코드는 다음과 같습니다

from rest_framework import serializers 
from django.contrib.auth import get_user_model 
from rest_framework.reverse import reverse 

User = get_user_model() 

class UserSerializer(serializers.ModelSerializer): 
    links = serializers.SerializerMethodField() 

    class Meta: 
     model = User 
     fields = ('id', 'username', 'first_name', 'last_name', 'email', 'password', 'groups', 'user_permissions', 'is_staff', 'is_active', 'is_superuser', 'last_login', 'date_joined', 'links') 

    def get_links(self, obj): 
     request = self.context['request'] 
     username = obj.get_username() 
     return{ 
      'self': reverse('user-detail', kwargs={User.USERNAME_FIELD: username}, request=request) 
     } 

    def validate(self, attrs): 
     #... 

감사

답변

1

당신은 AUTH_PASSWORD_VALIDATORS 설정으로 장고 암호 유효성 검사를 활성화 할 수 있습니다. 그러나

검사기

가 User.objects.create_user()와 create_superuser 예를 들면, 모델 수준에서 적용되지 않습니다().

그래서 당신은 시리얼에 유효성 검사를 추가해야합니다

from django.contrib.auth.password_validation import validate_password 

def validate_password(self, value): 
    user = self.context['request'].user 
    validate_password(password=value, user=user) 
+0

는 다른 분야에 대한 추가적인 유효성 검사기를 추가 할 수 있습니까? 또는 데이터를 채우고 유효성 검사 오류를 발생시키는 모델 양식을 만드는 것이 더 효과적입니까? – Alien13

+0

다른 모델 수준의 유효성 검사를 사용하지 않도록 설정하는 것은 아닙니다. 추가 유효성 검사가 필요한 경우에는'validate' 메서드를 재정의하거나 serializer 내부에'validate_field_name' 메서드를 구현할 수 있습니다. – neverwalkaloner

+0

아 맞아요, 저는 모델 메서드 .is_valid()가 데이터에서하는 유효성 검사를 복사하는 것에 대해 생각하고있었습니다. 하지만 흠 ... – Alien13