在清理之前修改传入Django表单的数据
问题内容:
我需要Form
在清洁之前修改传入的数据。我使它工作了,但是看起来很糟糕:
def __init__(self, *args, **kwargs):
if len(args) > 0:
data = args[0]
elif 'data' in kwargs:
data = kwargs['data']
else:
data = None
if data is not None:
data['content'] = ' '.join(data['content'].strip().split())
super(TagForm, self).__init__(*args, **kwargs)
有一些简洁的解决方案吗?
问题答案:
您可以压缩if
/ elif
/else
上一行很轻松地:
def __init__(self, *args, **kwargs):
data = args[0] if args else kwargs.get('data', None)
if data:
data['content'] = ' '.join(data['content'].strip().split())
super(TagForm, self).__init__(*args, **kwargs)
if args
以及if len(args) > 0
因为length == 0
项目是False
和length > 0
项目是而起作用True
。
if data``if data is not None
之所以能正常工作,是因为您假设它data
至少有一个键,如果有not None
,则为True
。