Difference between cleaned_data and cleaned_data.get in Django

后端 未结 2 381
清歌不尽
清歌不尽 2021-02-02 15:25

I\'ve seen some samples codes like:

    def clean_message(self):
    message = self.cleaned_data[\'message\']
    num_words = len(message.split())
    if num_wor         


        
相关标签:
2条回答
  • 2021-02-02 15:58

    .get() is basically a shortcut for getting an element out of a dictionary. I usually use .get() when I'm not certain if the entry in the dictionary will be there. For example:

    >>> 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'
    
    0 讨论(0)
  • 2021-02-02 16:00

    cleaned_data is a Python dictionary, you can access its values by:

    Specifying the key between [ ]:

     self.cleaned_data[‘field’]
    

    Using get() method:

    self.cleaned_data.get(‘field’)
    

    Difference between cleaned_data and cleaned_data.get in Django is that if the key does not exist in the dictionary, self.cleaned_data[‘field’] will raise a KeyError, while self.cleaned_data.get(‘field’) will return None.

    0 讨论(0)
提交回复
热议问题