python – Error: dictionary update sequence element #0 has length 1; 2 is required on Django 1.4

python – Error: dictionary update sequence element #0 has length 1; 2 is required on Django 1.4

Just ran into this problem. I dont know if its the same thing that hit your code, but for me the root cause was because I forgot to put name= on the last argument of the url (or path in Django 2.0+) function call.

For instance, the following functions throw the error from the question:

url(r^foo/(?P<bar>[A-Za-z]+)/$, views.FooBar.as_view(), foo)
path(foo/{slug:bar}/, views.FooBar, foo)

But these actually work:

url(r^foo/(?P<bar>[A-Za-z]+)/$, views.FooBar.as_view(), name=foo)
path(foo/{slug:bar}/, views.FooBar, name=foo)

The reason why the traceback is unhelpful is because internally, Django wants to parse the given positional argument as the keyword argument kwargs, and since a string is an iterable, an atypical code path begins to unfold. Always use name= on your urls!

I got this error when I was messing around with string and dictionary.

dict1 = {taras: vaskiv, iruna: vaskiv}
str1 = str(dict1)
dict(str1)
*** ValueError: dictionary update sequence element #0 has length 1; 2 is required

So what you actually got to do to get dict from string is:

dic2 = eval(str1)
dic2
{taras: vaskiv, iruna: vaskiv}

Or in matter of security we can use literal_eval

from ast import literal_eval

python – Error: dictionary update sequence element #0 has length 1; 2 is required on Django 1.4

Error in your question is raised when you try something like following:

>>> a_dictionary = {}
>>> a_dictionary.update([[1]])
Traceback (most recent call last):
  File <stdin>, line 1, in <module>
ValueError: dictionary update sequence element #0 has length 1; 2 is required

Its hard to tell where is the cause in your code unless you show your code, full traceback.

Leave a Reply

Your email address will not be published.