商城网站一般建设的宽度,北京网站建设排行,南昌企业网站模板建站,软件开发去哪里学Django REST Framework框架
【1】概述 Django REST Framework#xff08;简称DRF#xff09;是基于Django Web框架的一个开源的Web API框架。它提供了一组用于快速构建Web API的工具和库#xff0c;包括序列化器、认证、权限、视图、路由和文档化等功能。 DRF的主要特点包括…Django REST Framework框架
【1】概述 Django REST Framework简称DRF是基于Django Web框架的一个开源的Web API框架。它提供了一组用于快速构建Web API的工具和库包括序列化器、认证、权限、视图、路由和文档化等功能。 DRF的主要特点包括 提供了强大的序列化器可以将模型对象序列化为JSON等格式并支持反序列化 提供了多种认证方式包括基本认证、Token认证、OAuth认证等 提供了多种权限校验方式包括基于角色的权限校验、基于对象的权限校验等 提供了多种视图类包括基于函数的视图、基于类的视图、通用视图等 提供了路由功能可以轻松地将URL映射到对应的视图 可扩展性插件丰富
DRF官方https://www.django-rest-framework.org/
GitHubhttps://github.com/encode/django-rest-framework
【2】安装DRF框架 DRF框架依赖于Django需先安装Django环境。 pip install djangorestframework【3】注册DRF 在Django项目中使用DRF框架进行开发时需要将rest_framework在INSTALLED_APPS中进行注册。 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,task_api,Api01,Api02,rest_framework,
]【六】字段类型与选项参数
【1】字段类型
字段字段构造方式描述BooleanFieldBooleanField()布尔类型通常用于表示真假数据NullBooleanFieldNullBooleanField()用于表示布尔类型的数据可以包含三种值True、False和Null。它可以自动将输入的字符串转换为布尔类型并支持Null值CharFieldCharField(max_lengthNone, min_lengthNone, allow_blankFalse, trim_whitespaceTrue)字符串类型通常用于表示文本数据EmailFieldEmailField(max_lengthNone, min_lengthNone, allow_blankFalse)电子邮件类型通常用于表示电子邮件地址RegexFieldRegexField(regex, max_lengthNone, min_lengthNone, allow_blankFalse)用于表示正则表达式类型的数据。它可以自动验证输入的字符串是否符合指定的正则表达式格式SlugFieldSlugField(max_length50, minlengthNone, allow_blankFalse)是CharField的一个子类通常用于表示URL中的短标识符。它可以自动将输入的字符串转换为URL安全的格式URLFieldURLField(max_length200, min_lengthNone, allow_blankFalse)URL类型通常用于表示URL地址UUIDFieldUUIDField(format‘hex_verbose’) hex_verbose、 hex、int、urn用于表示UUID通用唯一识别码类型的数据。它可以自动验证输入的字符串是否符合UUID格式并将其转换为UUID对象IPAddressFieldIPAddressField(protocol‘both’, unpack_ipv4False, **options)用于表示IP地址类型的数据。它可以自动验证输入的字符串是否符合IP地址格式并将其转换为IP地址对象IntegerFieldIntegerField(max_valueNone, min_valueNone)整数类型通常用于表示数字数据FloatFieldFloatField(max_valueNone, min_valueNone)浮点数类型通常用于表示小数数据DecimalFieldDecimalField(max_digits, decimal_places, coerce_to_stringNone, max_valueNone, min_valueNone) max_digits: 最多位数 decimal_palces: 小数点位置高精度十进制数类型通常用于表示货币等需要精确计算的数据DateTimeFieldDateTimeField(formatapi_settings.DATETIME_FORMAT, input_formatsNone)日期时间类型通常用于表示时间戳等时间数据DateFieldDateField(formatapi_settings.DATE_FORMAT, input_formatsNone)日期类型通常用于表示日期数据TimeFieldTimeField(formatapi_settings.TIME_FORMAT, input_formatsNone)时间类型通常用于表示时间数据DurationFieldDurationField()用于表示时间间隔类型的数据可以表示一段时间的长度。它可以自动将输入的字符串转换为时间间隔类型ChoiceFieldChoiceField(choices)选择类型可以定义一个选择列表用于表示一组固定的选项MultipleChoiceFieldMultipleChoiceField(choices)用于表示多选框类型的数据。它可以定义一个选项列表用于表示可选的选项FileFieldFileField(max_lengthNone, allow_empty_fileFalse, use_urlUPLOADED_FILES_USE_URL)文件类型通常用于表示文件数据ImageFieldImageField(max_lengthNone, allow_empty_fileFalse, use_urlUPLOADED_FILES_USE_URL)图像类型通常用于表示图片数据ListFieldListField(child, min_lengthNone, max_lengthNone)列表类型可以用于表示一个列表数据DictFieldDictField(child)字典类型可以用于表示一个字典数据
【2】选项参数 max_length和min_length是针对字符串类型的参数max_value和min_value是针对数字类型的参数。 参数名称作用max_length最大长度min_length最小长度max_value最大值min_value最小值 无论哪种字段类型都可以使用以下可选参数。 参数名称说明read_only默认False 。用于指定字段是否只能用于序列化输出不能用于反序列化输入。通常用于表示只读数据例如时间戳等。在反序列化输入时该字段的值会被忽略。write_only默认False 。 用于指定字段是否只能用于反序列化不能用于序列化输出。通常用于表示敏感数据例如密码等。在序列化输出时该字段的值会被忽略。required表明该字段在反序列化时必须输入默认Truedefault序列化和反序列化时使用的默认值error_messages包含错误编号与错误信息的字典label用于HTML展示API页面时显示的字段名称allow_blank设置字段是否允许为空白字符串。如果设置为True反序列化时如果该字段的值为空白字符串会被认为是有效值validators设置字段的验证器。验证器是一个可调用对象用于验证输入的数据是否符合要求。 定义序列化器类的字段时如果没有指定read_only和write_only则这两个参数默认值都为False表明对应的字段既在序列化时使用也在反序列化时使用 【3】常见字段参数
除了CharField以外还要很多别的—表模中 models.CharField ---- 基本–对应如果跟 表模型中对不上统一用CharField
#1 字段类上有参数他们作用是做反序列化校验的 max_length...
#2 通用字段参数
required 表明该字段在反序列化时必须输入默认True
default 反序列化时使用的默认值
allow_null 表明该字段是否允许传入None默认False
validators 该字段使用的验证器--》字段自己的校验[1 max_lenght 2 validators ]局部钩子全局钩子 nameserializer.CharField(validators[valida_name])error_messages 包含错误编号与错误信息的字典label 用于HTML展示API页面时显示的字段名称
help_text 用于HTML展示API页面时显示的字段帮助提示信息 -------非常重要------
read_only 表明该字段仅用于序列化输出默认False
write_only 表明该字段仅用于反序列化输入默认False # 3 CharField
max_length 最大长度
min_lenght 最小长度
allow_blank 是否允许为空
trim_whitespace 是否截断空白字符# 4 IntegerField
max_value 最小值
min_value 最大值写一个data_name验证器
验证器可以应用于任何您想要验证的字段上包括 task_time、task_id 和 task_name。您可以在需要的任何字段上使用这个验证器以确保输入的数据符合您的要求。
通过将验证器应用于多个字段您可以在不同的字段上共享相同的验证逻辑从而实现代码的重用和简化。这种方式使得在整个序列化器中保持一致的验证逻辑变得更加容易。
from rest_framework import serializers
from rest_framework.exceptions import ValidationErrordef data_name(name):if name.startswith(shi):raise ValidationError(不能用shi开头)else:return nameclass TaskSerializer(serializers.Serializer):# requiredFalse表明该字段在反序列化时必须输入默认True# allow_null 表明该字段是否允许传入None默认False# default 反序列化时使用的默认值task_name serializers.CharField(requiredFalse,allow_nullTrue,default默认字段,validators[data_name])task_id serializers.CharField(max_length64,validators[data_name])task_time serializers.DateTimeField()