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

后端 未结 14 1112
梦如初夏
梦如初夏 2020-11-29 21:43

I have an error message on django 1.4:

dictionary update sequence element #0 has length 1; 2 is required

[EDIT]

It happe

14条回答
  •  青春惊慌失措
    2020-11-29 22:22

    Just ran into this problem. I don't know if it's 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[A-Za-z]+)/$', views.FooBar.as_view(), 'foo')
    path('foo/{slug:bar}/', views.FooBar, 'foo')
    

    But these actually work:

    url(r'^foo/(?P[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!

提交回复
热议问题