在Django中,您经常需要在字典中添加许多变量(视图中的上下文)。这些变量的名称通常很大,很清楚它是什么。
示例:
userprofile_creation_form = UserProfileCreationForm()
当你有很多这样的变量时,为它们写密钥会很不舒服,因为密钥通常与变量名相同。
context['userprofile_creation_form'] = userprofile_creation_form
... imagine 6 other variables
...
...
所以我希望能够使用这个变量将变量放入字典中,并且名称将从它的名称生成。
像:
context.add(userprofile_creation_form)
>>> context
>>> {'userprofile_creation_form':<Form userprofile_creation_form>, ... }
是否可以在python中以某种方式执行此操作,或者是否存在可以提供此行为的某些模块或解决方法?
答案 0 :(得分:0)
在以下示例中,form.__class__.__name__
给出了表单类的名称:
for form in my_forms:
k = ''.join('_{}'.format(c.lower()) if c.isupper() else c for c in form.__class__.__name__).lstrip('_')
context[k] = form
示例:强>
>>> class MyForm1:
... pass
...
>>> class MyForm2:
... pass
...
>>>
>>> my_forms = [MyForm1(), MyForm2()]
>>>
>>> context = {}
>>>
>>> for form in my_forms:
... k = ''.join('_{}'.format(c.lower()) if c.isupper() else c for c in form.__class__.__name__).lstrip('_')
... context[k] = form
...
>>> context
{'my_form1': <__main__.MyForm1 instance at 0x0000000002653188>, 'my_form2': <__main__.MyForm2 instance at 0x0000000002653548>}
>>>
如果您想使用确切名称将表单添加到context
,请使用:
>>> for form in my_forms:
... context[form.__class__.__name__] = form
...
>>> context
{'MyForm2': <__main__.MyForm2 instance at 0x0000000002713548>, 'MyForm1': <__main__.MyForm1 instance at 0x0000000002713188>}