공식 문서 : HTTPS : //www.django-rest-framework.org/
GitHub의 출처 : HTTPS : //github.com/encode/django-rest-framework/tree/master
1. 설치 DRF
djangorestframework를 설치 PIP
2. rest_framework 응용 프로그램 추가
우리는 장고 학습의 틀에서 만든 데모 프로젝트를 사용 INSTALLED_APPS settings.py의에서 'rest_framework'을 추가합니다.
INSTALLED_APPS = ... 'rest_framework' ]
그럼 당신은 DRF가 개발되었다 사용할 수 있습니다.
정의 시리얼
방법 1. 정의
시리얼에서 장고 REST 프레임 워크를 정의하는 클래스를 사용하여, rest_framework.serializers.Serializer에서 상속해야합니다.
예를 들어, 우리는 이미 데이터베이스 모델 클래스 BookInfo이
클래스 BookInfo (models.Model) : btitle = models.CharField (MAX_LENGTH = 20, verbose_name = '名称') bpub_date = models.DateField (verbose_name = '发布日期', 널 (null) = 참) 빵 = models.IntegerField (기본값 = 0 , verbose_name = '阅读量') bcomment = models.IntegerField (기본값 = 0 verbose_name = '评论量') 이미지 = models.ImageField (= 'booktest'upload_to, verbose_name = '图片'널 = TRUE)
우리는 다음과 같이이 모델 클래스의 직렬화가 정의 할 수 있습니다 제공하려면 :
BookInfoSerializer 클래스 (serializers.Serializer) : "" "책 데이터 시리얼 라이저" "" ID = serializers.IntegerField (레이블 = 'ID', READ_ONLY = 참) BTITLE = serializers.CharField (라벨 = '이름', MAX_LENGTH = 20 ) bpub_date = serializers.DateField (레이블 = '날짜', = 거짓 필수) 빵 = serializers.IntegerField (레이블 = '독서의 양'= 거짓)가 필요 bcomment = serializers.IntegerField (레이블 = '코멘트 양'필요 = 거짓) 이미지 = serializers.ImageField (레이블 = '사진', = 거짓 필수)
주 : 직렬 데이터베이스 모델뿐만 아니라 클래스 정의를 위해, 당신은 또한 데이터베이스가 아닌 데이터 모델 클래스를 정의 할 수 있습니다. 시리얼 라이저는 존재 데이터베이스 독립적이다.
2. 필드 및 옵션
공통 필드 유형 :
분야 | 필드의 건설 방법 |
---|---|
BooleanField | BooleanField () |
NullBooleanField | NullBooleanField () |
CharField | CharField (MAX_LENGTH = 없음, MIN_LENGTH = 없음, allow_blank = 거짓, trim_whitespace = 참) |
을 emailField | 을 emailField (MAX_LENGTH = 없음, MIN_LENGTH = 없음, allow_blank = 거짓) |
RegexField | RegexField (정규식, MAX_LENGTH = 없음, MIN_LENGTH = 없음, allow_blank = 거짓) |
SlugField | SlugField (최대 길이 = 50, MIN_LENGTH = 없음, allow_blank = 거짓) 일반 필드, 정상 모드의 [A-ZA-Z0-9을 확인 -] + |
URLField | URLField (MAX_LENGTH = 200, MIN_LENGTH = 없음, allow_blank = 거짓) |
UUIDField | UUIDField (= 형식 'hex_verbose ") 포맷 : . 1) 'hex_verbose' 로서, "5ce0e9a5-5ffa-654b-cee0-1238041fb31a" 2) 'hex' 로서 "5ce0e9a55ffa654bcee01238041fb31a" 3) 'int' - 등 : "123456789012312313134124512351145145114" 4) 'urn' 로서 : "urn:uuid:5ce0e9a5-5ffa-654b-cee0-1238041fb31a" |
IPAddressField | IPAddressField (프로토콜 = '모두', unpack_ipv4 = 거짓, ** 옵션) |
IntegerField | IntegerField (MAX_VALUE = 없음, MIN_VALUE = 없음) |
FloatField | FloatField (MAX_VALUE = 없음, MIN_VALUE = 없음) |
DecimalField | DecimalField (max_digits, DECIMAL_PLACES, coerce_to_string = 없음, MAX_VALUE = 없음, MIN_VALUE는 = 없음) max_digits는 : 디지트들의 최대 개수 decimal_palces : 소수점 위치 |
DateTimeField | DateTimeField (체재 = api_settings.DATETIME_FORMAT, input_formats = 없음) |
하여 DateField | 하여 DateField (체재 = api_settings.DATE_FORMAT, input_formats = 없음) |
TimeField | TimeField (체재 = api_settings.TIME_FORMAT, input_formats = 없음) |
DurationField | DurationField () |
ChoiceField | ChoiceField (선택) 선택과 같은 장고의 사용 |
MultipleChoiceField | MultipleChoiceField (선택) |
및 FileField | FileField와 (MAX_LENGTH = 없음, allow_empty_file = 거짓, use_url = UPLOADED_FILES_USE_URL) |
ImageField | ImageField (MAX_LENGTH = 없음, allow_empty_file = 거짓, use_url = UPLOADED_FILES_USE_URL) |
의 ListField | 의 ListField (아이 = <a_field_instance> MIN_LENGTH = 없음, MAX_LENGTH = 없음) |
DictField | DictField (아이 = <a_field_instance>) |
옵션 매개 변수 :
参数名称 | 作用 |
---|---|
max_length | 最大长度 |
min_lenght | 最小长度 |
allow_blank | 是否允许为空 |
trim_whitespace | 是否截断空白字符 |
max_value | 最小值 |
min_value | 最大值 |