ÀÖÓãµç¾º

  • <ehj id='jvrgcp'></ehj>

    ½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

    È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

    DRF¿ò¼Ü£ºÐòÁл¯Æ÷×Ö¶ÎÀàÐͺÍÑ¡Ïî²ÎÊý½éÉÜ

    ¸üÐÂʱ¼ä: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)


    ʾÀý½á¹û£º

    1596789553423_ÐòÁл¯Æ÷01.png

    ½á¹û˵Ã÷£º

    ÉÏÃæµÄ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)

    ʾÀý½á¹û£º

    1596789565227_ÐòÁл¯Æ÷02.png


    ½á¹û˵Ã÷£º

    ÉÏÃæµÄ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)

    ʾÀý½á¹û£º

    1596789575137_ÐòÁл¯Æ÷03.png


    ½á¹û˵Ã÷£º

    ÉÏÃæµÄ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)

    ʾÀý½á¹û£º

    1596789585319_ÐòÁл¯Æ÷04.png

    ½á¹û˵Ã÷£º

    ÉÏÃæµÄ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)


    ʾÀý½á¹û£º

    1596789596245_ÐòÁл¯Æ÷05.png


    ½á¹û˵Ã÷£º

    ÉÏÃæµÄ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)

    ʾÀý½á¹û£º

    1596789606758_ÐòÁл¯Æ÷06.png


    ½á¹û˵Ã÷£º

    ÉÏÃæµÄ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)


    ½á¹û˵Ã÷£º

    1596789617987_ÐòÁл¯Æ÷07.png

    ÉÏÃæµÄname×Ö¶ÎÉèÖÃÁËmin_length=6ºÍmax_length=20Á½¸ö²ÎÊý£¬ÔÚ½øÐÐÊý¾ÝУÑéʱ£¬»áÒªÇónameµÄ³¤¶ÈÔÚ6-20Ö®¼ä£¬ÒòΪÎÒÃÇ´«µÝµÄ"smart"³¤¶ÈΪ5£¬ËùÒÔУÑéʧ°Ü¡£

    4. ÄÚÈÝ×ܽá

    ±¾´ÎÎÄÕÂÎÒÃǽ²½âÁËÒÔÏÂÄÚÈÝ£¬´ó¼Ò×¢Òâ½áºÏʾÀý´úÂëÀ´¼ÓÇ¿¶ÔһЩ³£¼ûµÄÑ¡Ïî²ÎÊýµÄÀí½â£¬Ï´ÎÎÒÃÇÀ´Ïêϸ½²½âÒ»ÏÂÐòÁл¯Æ÷µÄÐòÁл¯¹¦ÄÜ¡£

    1)³£¼ûµÄ×Ö¶ÎÀàÐÍ

    2)ͨÓÃÑ¡Ïî²ÎÊý

    3)³£ÓÃÑ¡Ïî²ÎÊý

    ²ÂÄãϲ»¶£º

    pythonÈÕ־ģ¿é loggingÔõôÓÃ?

    Pythonµ¥ÀýÉè¼ÆÄ£Ê½ºÍÆóÒµ¼¶µçÉÌÃëɱҵÎñ½â¾ö·½°¸

    PythonÅàѵ¿Î³Ì

    0 ·ÖÏíµ½£º
    ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿