我们从Python开源项目中,提取了以下5个代码示例,用于说明如何使用rest_framework.serializers.HiddenField()。
def render_field(self, field, parent_style): if isinstance(field._field, serializers.HiddenField): return '' style = dict(self.default_style[field]) style.update(field.style) if 'template_pack' not in style: style['template_pack'] = parent_style.get('template_pack', self.template_pack) style['renderer'] = self # Get a clone of the field with text-only value representation. field = field.as_form_field() if style.get('input_type') == 'datetime-local' and isinstance(field.value, six.text_type): field.value = field.value.rstrip('Z') if 'template' in style: template_name = style['template'] else: template_name = style['template_pack'].strip('/') + '/' + style['base_template'] template = loader.get_template(template_name) context = {'field': field, 'style': style} return template_render(template, context)
def get_serializer_fields(self, path, method, view): """ Return a list of `coreapi.Field` instances corresponding to any request body input, as determined by the serializer class. """ if method not in ('PUT', 'PATCH', 'POST'): return [] if not hasattr(view, 'get_serializer'): return [] serializer = view.get_serializer() if isinstance(serializer, serializers.ListSerializer): return [ coreapi.Field( name='data', location='body', required=True, schema=coreschema.Array() ) ] if not isinstance(serializer, serializers.Serializer): return [] fields = [] for field in serializer.fields.values(): if field.read_only or isinstance(field, serializers.HiddenField): continue required = field.required and method != 'PATCH' field = coreapi.Field( name=field.field_name, location='form', required=required, schema=field_to_schema(field) ) fields.append(field) return fields
def add_object_definitions(self, method, view): """Create an Object definition from serializer It will create a different definitions depending on the method, definition name is {serializer class name}_{read|write} POST, PUT, PATCH is write GET, DELETE, HEAD is read write methods will not include read only fields read methods will not include write only fields Note that for write methods it will also return a read definition because by default this is the definition object returned by write methods :param str method: GET, POST etc :param rest_framework.generics.GenericAPIView view: """ if not hasattr(view, 'get_serializer'): return None try: serializer = view.get_serializer() except AssertionError: # Default behaviour of GenericAPIView is to raise AssertionError return None if method in ('POST', 'PUT', 'PATCH'): write = True # also generate a read definition, because it is commonly used as response for write actions self.add_object_definitions('GET', view) name = '%s_write' % serializer.__class__.__name__ elif method in ('GET', 'DELETE', 'HEAD'): write = False name = '%s_read' % serializer.__class__.__name__ else: assert False, 'Can not recognize method %s' % method if name in self.definitions: return fields = [] for field in serializer.fields.values(): if isinstance(field, serializers.HiddenField) or write and field.read_only or \ not write and field.write_only: continue # required = bool(field.required) # field.required is a list field = field_to_schema(field) fields.append(field) self.definitions[name] = coreschema.Object(title=name, properties=fields) return self.definitions[name]
def get_serializer_fields(self, path, method, view, version=None, method_func=None): """ Return a list of `coreapi.Field` instances corresponding to any request body input, as determined by the serializer class. """ if method not in ('PUT', 'PATCH', 'POST'): return [] serializer_class = self.get_serializer_class(view, method_func) if not serializer_class: return [] serializer = serializer_class() if isinstance(serializer, serializers.ListSerializer): return [ Field( name='data', location='body', required=True, schema=coreschema.Array() ) ] if not isinstance(serializer, serializers.Serializer): return [] fields = [] for field in serializer.fields.values(): if field.read_only or isinstance(field, serializers.HiddenField): continue required = field.required and method != 'PATCH' # if the attribute ('help_text') of this field is a lazy translation object, force it to generate a string description = str(field.help_text) if isinstance(field.help_text, Promise) else field.help_text fallback_schema = self.fallback_schema_from_field(field) field = Field( name=field.field_name, location='form', required=required, schema=fallback_schema if fallback_schema else field_to_schema(field), description=description, ) fields.append(field) return fields