我正在考虑使用DRY方式为我的<input>HTML元素的占位符属性使用字段标签.我正在使用django-crispy-forms.
现在我有:
class FilterForm(Form):
query = CharField(max_length=50, label='', required=False)
def __init__(self, data=None, files=None, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
Field('query', placeholder='Search ...'),
)
super(FilterForm, self).__init__(data, files, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但是,我不希望单独设置标签和占位符,因为这最终会有更多的字段,而且非常冗长.
你有什么建议?
我有一个具有以下签名的函数:
def function(a=None, b=None, c=None):
# ... some more code ...
Run Code Online (Sandbox Code Playgroud)
如果通过,a、b 和 c 只能是布尔值。
我想知道 a、b 和 c 的所有有效组合。
请注意,a、b 和 c 是可选的,因此可以使用最少 0 个参数和最多 3 个参数调用此函数。
我能够获得所有可能的参数组合:
arg_names = ['a', 'b', 'c']
arg_values = [None, True, False]
arg_combinations = []
for i in range(len(arg_names)):
arg_combinations += list(
itertools.combinations(arg_names, i + 1)
)
Run Code Online (Sandbox Code Playgroud)
其中产生:
[('a',), ('b',), ('c',), ('a', 'b'), ('a', 'c'), ('b', 'c'), ('a', 'b', 'c')]
Run Code Online (Sandbox Code Playgroud)
但是我无法更进一步,创建参数和值的所有可能组合:
arg_value_combinations = []
for c in arg_combinations:
arg_value_combinations += list(
itertools.product(c, arg_values) …Run Code Online (Sandbox Code Playgroud)