@@ -425,6 +425,7 @@ def __init__(
425425 json_encoder_kwargs : Optional [dict ] = None ,
426426 json_decoder : Optional [Callable ] = None ,
427427 json_decoder_kwargs : Optional [dict ] = None ,
428+ null : Optional [bool ] = None ,
428429 * args ,
429430 ** kwargs ,
430431 ):
@@ -449,7 +450,14 @@ def __init__(
449450 self .json_decoder = json_decoder or json .loads
450451 self .json_decoder_kwargs = json_decoder_kwargs or {}
451452 self .data = None
453+ self .null = null
452454 super ().__init__ (* args , ** kwargs )
455+ try :
456+ self ._default = self .default ()
457+ except TypeError :
458+ self ._default = self .default
459+ if isinstance (self ._default , dict ):
460+ self ._default = self .json_encoder (self ._default , ** self .json_encoder_kwargs )
453461
454462 def _parse_json_data (self ):
455463 """Tries to load JSON data with python internal JSON library."""
@@ -476,10 +484,10 @@ def process_formdata(self, valuelist):
476484
477485 def _value (self ):
478486 """Show existing data as pretty-formatted, or show raw data/empty dict."""
479- if self .data :
480- if isinstance ( self . data , dict ):
481- return self .json_encoder (self .data , ** self .json_encoder_kwargs )
482- else :
483- # This allows to fix/see input errors, without escaping.
484- return self . data
485- return "{} "
487+ if self .data is not None :
488+ return (
489+ self .json_encoder (self .data , ** self .json_encoder_kwargs )
490+ if isinstance ( self . data , dict )
491+ else self . data
492+ )
493+ return self . _default if self . _default is not None and not self . null else " "
0 commit comments