¸üÐÂʱ¼ä:2020Äê08ÔÂ07ÈÕ16ʱ45·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
1. ×Ö¶ÎÀàÐͺÍÑ¡Ïî²ÎÊý
±¾ÆªÎÄÕÂÎÒÃÇÀ´¼ÌÐøÑ§Ï°ÐòÁл¯Æ÷ÀඨÒåÖеÄ×Ö¶ÎÀàÐͺÍÑ¡Ïî²ÎÊý¡£
Ê×ÏÈÎÒÃÇÀ´»Ø¹ËÒ»ÏÂÐòÁл¯Æ÷ÀàµÄ»ù±¾¶¨ÒåÐÎʽ£º
ÔÚ¶¨ÒåÐòÁл¯Æ÷Ààʱ£¬ÎÒÃÇÐèҪѡÔñ¶ÔÓ¦µÄ×Ö¶ÎÀàÐͺÍÉèÖöÔÓ¦µÄÑ¡Ïî²ÎÊý£¬½ÓÏÂÀ´ÎÒÃÇ·Ö±ðÀ´½øÐн²½â¡£
2. ×Ö¶ÎÀàÐÍ
ÏÂÃæµÄ±í¸ñÖÐÎÒÃÇÁгöÁËÐòÁл¯Æ÷Öг£ÓõÄ×Ö¶ÎÀàÐÍ£¬¶ÔÓÚDRF¿ò¼ÜÖÐÐòÁл¯Æ÷ËùÓеÄ×Ö¶ÎÀàÐÍ£¬ÎÒÃÇ¿ÉÒÔµ½ rest_framework.fields Ä£¿éÖнøÐв鿴¡£
| ×Ö¶Î | ×ֶι¹Ô췽ʽ |
|---|---|
| BooleanField | BooleanField() |
| CharField | CharField(max_length=None, min_length=None, allow_blank=False, trim_whitespace=True) |
| EmailField | EmailField(max_length=None, min_length=None, allow_blank=False) |
| IntegerField | IntegerField(max_value=None, min_value=None) |
| FloatField | FloatField(max_value=None, min_value=None) |
| DecimalField |
DecimalField(max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None) max_digits: ×î¶àλÊý decimal_palces: СÊýµãλÖà |
| DateTimeField | DateTimeField(format=api_settings.DATETIME_FORMAT, input_formats=None) |
| DateField | DateField(format=api_settings.DATE_FORMAT, input_formats=None) |
| TimeField | TimeField(format=api_settings.TIME_FORMAT, input_formats=None) |
| ChoiceField |
ChoiceField(choices) choicesÓëDjangoµÄÓ÷¨Ïàͬ |
| ImageField | ImageField(max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL) |
ÎÒÃÇ¿ÉÒÔ·¢ÏÖ£¬ÐòÁл¯Æ÷ÀඨÒå×Ö¶ÎÀàÐͺÍDjango¿ò¼ÜÖеÄ×Ö¶ÎÀàÐÍÊÇÒ»Ñù£¬ÎÒÃÇÖ»ÐèÖªµÀ³£ÓõÄ×Ö¶ÎÀàÐ;ͿÉÒÔÁË£¬¶ÔÓÚÆäËû×Ö¶ÎÀàÐÍ£¬ÐèÒªµÄʱºòÔÙÈ¥²é¿´¾Í¿ÉÒÔÁË¡£
3. Ñ¡Ïî²ÎÊý
¶ÔÓÚÐòÁл¯Æ÷×ֶεÄÑ¡Ïî²ÎÊý£¬·Ö±ðÈçÏÂÁ½Àࣺ
·Í¨ÓÃÑ¡Ïî²ÎÊý£ºÈÎÒâ×Ö¶ÎÀàÐͶ¼ÓµÓеIJÎÊý
·³£ÓÃÑ¡Ïî²ÎÊý£ºÌض¨×Ö¶ÎÀàÐͲÅÓµÓеIJÎÊý
3.1 ͨÓÃÑ¡Ïî²ÎÊý
ͨÓÃÑ¡Ïî²ÎÊýÓÐÈçϳ£¼û²ÎÊý£º
| ²ÎÊýÃû³Æ | ˵Ã÷ |
| read_only | ĬÈÏFalse£¬ÈôÉèÖÃΪTrue£¬±íÃ÷¶ÔÓ¦×Ö¶ÎÖ»ÔÚÐòÁл¯²Ù×÷ʱÆð×÷Óà |
| write_only | ĬÈÏFalse£¬ÈôÉèÖÃΪTrue£¬±íÃ÷¶ÔÓ¦×Ö¶ÎÖ»ÔÚ·´ÐòÁл¯²Ù×÷ʱÆð×÷Óà |
| required | ĬÈÏTrue£¬±íÃ÷¶ÔÓ¦×Ö¶ÎÔÚÊý¾ÝУÑéʱ±ØÐë´«Èë |
| default | ÐòÁл¯ºÍ·´ÐòÁл¯Ê±Ê¹ÓõÄĬÈÏÖµ |
| label | ÓÃÓÚHTMLչʾAPIÒ³ÃæÊ±£¬ÏÔʾµÄ×Ö¶ÎÃû³Æ£¬Àí½âΪ¶Ô×ֶεÄ×¢ÊÍ˵Ã÷¼´¿É |
¶ÔÓÚÕâЩͨÓõÄÑ¡Ïî²ÎÊý£¬ÎÒÃÇÐèÒªÖØµãÀí½âÀïÃæºìÉ«²¿·Ö3¸öÑ¡Ïî²ÎÊýµÄ×÷Ó㬽ÓÏÂÀ´ÎÒÃÇÀ´¶ÔÕâЩѡÏî²ÎÊý×öһЩ¾ßÌåµÄ½éÉÜ¡£
ʾÀý1£ºread_only²ÎÊý (×¢Òâ¶Ô±ÈÉèÖÃ֮ǰºÍÉèÖÃÖ®ºóµÄЧ¹û)
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField()
# ´Ë´¦½«age×ֶεÄread_only²ÎÊýÉèÖÃΪTrue
age = serializers.IntegerField(read_only=True)
if __name__ == "__main__":
# ×¼±¸Êý¾Ý
data = {'name': 'laowang', 'age': 18}
# Êý¾ÝУÑé
serializer = UserSerializer(data=data)
res = serializer.is_valid()
if res:
# »ñȡУÑéͨ¹ýÖ®ºóµÄÊý¾Ý
print('УÑéͨ¹ý£º', serializer.validated_data)
else:
# »ñȡУÑéʧ°ÜÖ®ºóµÄ´íÎóÌáʾÐÅÏ¢
print('УÑéʧ°Ü£º', serializer.errors)
ʾÀý½á¹û£º

½á¹û˵Ã÷£º
ÉÏÃæµÄage×Ö¶ÎÒѾÉèÖõÄread_only=True£¬ËùÒÔÔÚ·´ÐòÁл¯-Êý¾ÝУÑéʱ²»±Ø´«È룬¼´Ê¹´«ÁË£¬Ò²»áºöÂÔËüµÄ´æÔÚ¡£
ʾÀý2£ºwrite_only²ÎÊý (×¢Òâ¶Ô±ÈÉèÖÃ֮ǰºÍÉèÖÃÖ®ºóµÄЧ¹û)
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField()
# ´Ë´¦½«age×ֶεÄwrite_only²ÎÊýÉèÖÃΪTrue
age = serializers.IntegerField(write_only=True)
if __name__ == "__main__":
# ´´½¨user¶ÔÏó
user = User('smart', 18)
# ½«user¶ÔÏóÐòÁл¯Îª×Öµä{'name': 'smart', 'age': 18}
serializer = UserSerializer(user)
# serializer.data»ñÈ¡ÐòÁл¯Ö®ºóµÄ×ÖµäÊý¾Ý
print(serializer.data)
ʾÀý½á¹û£º

½á¹û˵Ã÷£º
ÉÏÃæµÄage×Ö¶ÎÒѾÉèÖõÄwrite_only=True£¬ËùÒÔÔÚ½øÐÐÐòÁл¯²Ù×÷ʱ»áºöÂÔËüµÄ´æÔÚ£¬Òò¶øÉÏÃæµÄÐòÁл¯Ö®ºóµÄÊý¾ÝÖÐÖ»»áÄÃuser¶ÔÏónameÊôÐÔµÄÖµ£¬¶ø²»»áÄÃuser¶ÔÏóµÄageÊôÐÔµÄÖµ¡£
ʾÀý3£ºrequired²ÎÊý (×¢Òâ¶Ô±ÈÉèÖÃ֮ǰºÍÉèÖÃÖ®ºóµÄЧ¹û)
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField()
# ´Ë´¦age×ֶεÄrequired²ÎÊýĬÈÏΪTrue
age = serializers.IntegerField()
if __name__ == "__main__":
# ×¼±¸Êý¾Ý
data = {'name': 'laowang'}
# Êý¾ÝУÑé
serializer = UserSerializer(data=data)
res = serializer.is_valid()
if res:
# »ñȡУÑéͨ¹ýÖ®ºóµÄÊý¾Ý
print('УÑéͨ¹ý£º', serializer.validated_data)
else:
# »ñȡУÑéʧ°ÜÖ®ºóµÄ´íÎóÌáʾÐÅÏ¢
print('УÑéʧ°Ü£º', serializer.errors)
ʾÀý½á¹û£º

½á¹û˵Ã÷£º
ÉÏÃæµÄage×Ö¶ÎĬÈÏrequired=True£¬±íÃ÷Êý¾ÝУÑéʱÊDZش«µÄ£¬Ê¾ÀýÖÐδ´«µÝage£¬ËùÒÔУÑéʧ°Ü¡£
½«ÉÏÃæÊ¾ÀýÖÐage×ֶεÄrequiredÉèÖÃΪFalse£º
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField()
# ´Ë´¦½«age×ֶεÄrequired²ÎÊýÉèÖÃΪFalse
age = serializers.IntegerField(required=False)
if __name__ == "__main__":
# ×¼±¸Êý¾Ý
data = {'name': 'laowang'}
# Êý¾ÝУÑé
serializer = UserSerializer(data=data)
res = serializer.is_valid()
if res:
# »ñȡУÑéͨ¹ýÖ®ºóµÄÊý¾Ý
print('УÑéͨ¹ý£º', serializer.validated_data)
else:
# »ñȡУÑéʧ°ÜÖ®ºóµÄ´íÎóÌáʾÐÅÏ¢
print('УÑéʧ°Ü£º', serializer.errors)
ʾÀý½á¹û£º

½á¹û˵Ã÷£º
ÉÏÃæµÄage×Ö¶ÎÉèÖÃrequired=Fasle£¬±íÃ÷Êý¾ÝУÑéʱ¿É´«¿É²»´«£¬Ê¾ÀýÖÐδ´«µÝage£¬Ð£ÑéÒ²ÄÜͨ¹ý¡£
ʾÀý4£ºdefault²ÎÊý (×¢Òâ¶Ô±ÈÉèÖÃ֮ǰºÍÉèÖÃÖ®ºóµÄЧ¹û)
1)ÐòÁл¯Ê±ËùʹÓõÄĬÈÏÖµ
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField()
age = serializers.IntegerField()
addr = serializers.CharField(default='ĬÈϵØÖ·')
if __name__ == "__main__":
# ´´½¨user¶ÔÏó
user = User('smart', 18)
# ½«user¶ÔÏóÐòÁл¯Îª×Öµä{'name': 'smart', 'age': 18}
serializer = UserSerializer(user)
# serializer.data»ñÈ¡ÐòÁл¯Ö®ºóµÄ×ÖµäÊý¾Ý
print(serializer.data)
ʾÀý½á¹û£º

½á¹û˵Ã÷£º
ÉÏÃæµÄaddr×Ö¶ÎÉèÖÃÁËÒ»¸ödefaultĬÈÏÖµ£¬ÔÚÐòÁл¯user¶ÔÏóʱ£¬ÒòΪuser¶ÔÏóÖÐûÓÐaddrÊôÐÔ£¬ËùÒÔÐòÁл¯Ö®ºóµÄÊý¾ÝÖÐaddrʹÓÃÁËĬÈÏÖµ¡£
СÌáʾ£ºÈç¹ûuser¶ÔÏóÓÐaddrÊôÐÔ£¬ÔòÐòÁл¯Ö®ºóµÄ×ÖµäÖÐaddrµÄÖµ²»ÔÙʹÓÃdefaultÉèÖõÄĬÈÏÖµ¡£
2)·´ÐòÁл¯Ê±ËùʹÓõÄĬÈÏÖµ
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField()
# ×¢£ºÒ»µ©Ò»¸ö×Ö¶ÎÉèÖÃÁËdefault£¬ÔòÕâ¸ö×ֶεÄrequiredĬÈÏΪFalse
age = serializers.IntegerField(default=20)
if __name__ == "__main__":
# ×¼±¸Êý¾Ý
data = {'name': 'laowang'}
# Êý¾ÝУÑé
serializer = UserSerializer(data=data)
res = serializer.is_valid()
if res:
# »ñȡУÑéͨ¹ýÖ®ºóµÄÊý¾Ý
print('УÑéͨ¹ý£º', serializer.validated_data)
else:
# »ñȡУÑéʧ°ÜÖ®ºóµÄ´íÎóÌáʾÐÅÏ¢
print('УÑéʧ°Ü£º', serializer.errors)
ʾÀý½á¹û£º

½á¹û˵Ã÷£º
ÉÏÃæµÄage×Ö¶ÎÉèÖÃÁËÒ»¸öĬÈÏÖµ£¬Ð£ÑéµÄdata×ÖµäÖÐδ´«µÝageÊý¾Ý£¬ËùÒÔУÑéÖ®ºóµÄÊý¾ÝÖÐageʹÓÃÁËÉèÖõÄĬÈÏÖµ¡£
СÌáʾ£ºÈç¹û·´ÐòÁл¯Ê±´«µÝµÄdataÖаüº¬age£¬ÔòУÑéÖ®ºóµÄ×ÖµäÖÐageµÄÖµ²»ÔÙʹÓÃdefaultÉèÖõÄĬÈÏÖµ¡£
3.2 ³£ÓÃÑ¡Ïî²ÎÊý
³£ÓõÄÑ¡Ïî²ÎÊýÓÐÈçϼ¸¸ö²ÎÊý£º
СÌáʾ£ºÒÔÏÂ4¸ö²ÎÊý¶¼ÊÇÖ»ÔÚÊý¾ÝУÑéʱÆð×÷Óá£
| ²ÎÊýÃû³Æ | ×÷Óà |
| max_length | ×Ö·û´®×î´ó³¤¶È |
| min_length | ×Ö·û´®×îС³¤¶È |
| max_value | Êý×Ö×î´óÖµ |
| min_value | Êý×Ö×îСֵ |
²ÎÊý˵Ã÷£º
·max_lengthºÍmin_lengthÊÇÕë¶Ô×Ö·û´®ÀàÐ͵IJÎÊý;
·max_valueºÍmin_valueÊÇÕë¶ÔÊý×ÖÀàÐ͵IJÎÊý¡£
ʾÀý1£ºmax_lengthºÍmin_length
ʾÀý½á¹û£º
from rest_framework import serializers
class User(object):
"""Óû§Àà"""
def __init__(self, name, age):
self.name = name
self.age = age
class UserSerializer(serializers.Serializer):
"""ÐòÁл¯Æ÷Àà"""
name = serializers.CharField(min_length=6, max_length=20)
# ´Ë´¦age×ֶεÄrequired²ÎÊýĬÈÏΪTrue
age = serializers.IntegerField()
if __name__ == "__main__":
# ×¼±¸Êý¾Ý
data = {'name': 'smart'}
# Êý¾ÝУÑé
serializer = UserSerializer(data=data)
res = serializer.is_valid()
if res:
# »ñȡУÑéͨ¹ýÖ®ºóµÄÊý¾Ý
print('УÑéͨ¹ý£º', serializer.validated_data)
else:
# »ñȡУÑéʧ°ÜÖ®ºóµÄ´íÎóÌáʾÐÅÏ¢
print('УÑéʧ°Ü£º', serializer.errors)
½á¹û˵Ã÷£º

ÉÏÃæµÄname×Ö¶ÎÉèÖÃÁËmin_length=6ºÍmax_length=20Á½¸ö²ÎÊý£¬ÔÚ½øÐÐÊý¾ÝУÑéʱ£¬»áÒªÇónameµÄ³¤¶ÈÔÚ6-20Ö®¼ä£¬ÒòΪÎÒÃÇ´«µÝµÄ"smart"³¤¶ÈΪ5£¬ËùÒÔУÑéʧ°Ü¡£
4. ÄÚÈÝ×ܽá
±¾´ÎÎÄÕÂÎÒÃǽ²½âÁËÒÔÏÂÄÚÈÝ£¬´ó¼Ò×¢Òâ½áºÏʾÀý´úÂëÀ´¼ÓÇ¿¶ÔһЩ³£¼ûµÄÑ¡Ïî²ÎÊýµÄÀí½â£¬Ï´ÎÎÒÃÇÀ´Ïêϸ½²½âÒ»ÏÂÐòÁл¯Æ÷µÄÐòÁл¯¹¦ÄÜ¡£
1)³£¼ûµÄ×Ö¶ÎÀàÐÍ
2)ͨÓÃÑ¡Ïî²ÎÊý
3)³£ÓÃÑ¡Ïî²ÎÊý
²ÂÄãϲ»¶£º
pythonÈÕ־ģ¿é loggingÔõôÓÃ?
Pythonµ¥ÀýÉè¼ÆÄ£Ê½ºÍÆóÒµ¼¶µçÉÌÃëɱҵÎñ½â¾ö·½°¸
PythonÅàѵ¿Î³Ì
±±¾©Ð£Çø