我见过一些示例代码:
def clean_message(self):
message = self.cleaned_data['message']
num_words = len(message.split())
if num_words < 4:
raise forms.ValidationError("Not enough words!")
return message
以及一些例子:
def clean(self):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
...
self.check_for_test_cookie()
return self.cleaned_data
这两者的区别是什么?
答案 0 :(得分:28)
.get()
基本上是从dictionary中获取元素的快捷方式。当我不确定词典中的条目是否存在时,我通常会使用.get()
。例如:
>>> cleaned_data = {'username': "bob", 'password': "secret"}
>>> cleaned_data['username']
'bob'
>>> cleaned_data.get('username')
'bob'
>>> cleaned_data['foo']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'foo'
>>> cleaned_data.get('foo') # No exception, just get nothing back.
>>> cleaned_data.get('foo', "Sane Default")
'Sane Default'
答案 1 :(得分:0)
cleaning_data是一个Python字典,您可以通过以下方式访问其值:
指定[]:
之间的关键字 self.cleaned_data[‘field’]
使用get()方法:
self.cleaned_data.get(‘field’)
Django中的cleaning_data和cleaning_data.get之间的区别在于,如果字典中不存在该键,self.cleaned_data[‘field’]
将引发 KeyError ,而self.cleaned_data.get(‘field’)
将返回<强>无强>