Saya memiliki pesan kesalahan pada Django 1.4:
elemen urutan pembaruan kamus # 0 memiliki panjang 1; 2 diperlukan
[EDIT]
Itu terjadi ketika saya mencoba menggunakan tag templat seperti: `{% for v in values%}:
dictionary update sequence element #0 has length 1; 2 is required
Request Method: GET
Request URL: ...
Django Version: 1.4.5
Exception Type: ValueError
Exception Value:
dictionary update sequence element #0 has length 1; 2 is required
Exception Location: /usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py in __init__, line 21
Python Executable: /usr/bin/uwsgi-core
Python Version: 2.7.3
Python Path:
['/var/www/',
'.',
'',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/pymodules/python2.7']
Server time: sam, 13 Jul 2013 16:15:45 +0200
Error during template rendering
In template /var/www/templates/app/index.html, error at line 172
dictionary update sequence element #0 has length 1; 2 is required
172 {% for product in products %}
Traceback Switch to copy-and-paste view
/usr/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/contrib/auth/decorators.py in _wrapped_view
return view_func(request, *args, **kwargs)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/views/decorators/http.py in inner
return func(request, *args, **kwargs)
...
▶ Local vars
./app/views.py in index
context_instance=RequestContext(request))
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/shortcuts/__init__.py in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/loader.py in render_to_string
return t.render(context_instance)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
return self._render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in _render
return self.nodelist.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
bit = self.render_node(node, context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/debug.py in render_node
return node.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/loader_tags.py in render
return compiled_parent._render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in _render
return self.nodelist.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
bit = self.render_node(node, context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/debug.py in render_node
return node.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/loader_tags.py in render
result = block.nodelist.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
bit = self.render_node(node, context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/debug.py in render_node
return node.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/defaulttags.py in render
len_values = len(values)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/core/paginator.py in __len__
return len(self.object_list)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/db/models/query.py in __len__
self._result_cache = list(self.iterator())
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/db/models/query.py in iterator
obj = model(*row[index_start:aggregate_start])
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/db/models/base.py in __init__
setattr(self, field.attname, val)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py in __set__
value = self.field._attribute_class(value, self.field, obj)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py in __init__
super(HStoreDictionary, self).__init__(value, **params)
...
▶ Local vars
Itu terjadi juga ketika saya mencoba mengakses pada queryset hstore:
[sunting]
Traceback (most recent call last):
File "manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 459, in execute_manager
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/home/name/workspace/project/app/data/commands/my_command.py", line 60, in handle
item_id = tmp[0].id,
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 207, in __getitem__
return list(qs)[0]
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 87, in __len__
self._result_cache.extend(self._iter)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 301, in iterator
obj = model(*row[index_start:aggregate_start])
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 300, in __init__
setattr(self, field.attname, val)
File "/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py", line 38, in __set__
value = self.field._attribute_class(value, self.field, obj)
File "/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py", line 21, in __init__
super(HStoreDictionary, self).__init__(value, **params)
ValueError: dictionary update sequence element #0 has length 1; 2 is required
kodenya adalah:
tmp = Item.objects.where(HE("kv").contains({'key':value}))
if tmp.count() > 0:
item_id = tmp[0].id,
Saya hanya mencoba mengakses nilainya. Saya tidak mengerti pesan "urutan pembaruan". Ketika saya menggunakan kursor bukan queryset hstore, fungsinya bekerja. Kesalahan juga terjadi pada rendering template. Saya baru saja restart uwsgi
dan semuanya bekerja dengan baik, tetapi kesalahan kembali lagi nanti.
[sunting]
Ada yang punya ide?
values
dantmp
. Sementara kode tidak ada, -1 (mungkin sementara) untuk pertanyaan ini.dict(['A',"b"])
sementara ini tidakdict([('A',"b")])
Jawaban:
Baru saja mengalami masalah ini. Saya tidak tahu apakah itu hal yang sama yang mengenai kode Anda, tetapi bagi saya akar penyebabnya adalah karena saya lupa untuk menggunakan
name=
argumen terakhir dari pemanggilan fungsiurl
(ataupath
dalam Django 2.0+).Misalnya, fungsi-fungsi berikut melempar kesalahan dari pertanyaan:
Tetapi ini sebenarnya bekerja:
Alasan mengapa traceback tidak membantu adalah karena secara internal, Django ingin mengurai argumen posisi yang diberikan sebagai argumen kata kunci
kwargs
, dan karena string adalah iterable, jalur kode atipikal mulai terbuka. Selalu gunakanname=
di url Anda!sumber
Router.register
metode Django RestFramework. Terlihat sangat mirip, perbedaannya adalahname
kwarg ...path
URL. Lupa untuk menggunakan kwarg dan memiliki ini:path('foo/', views.foo, 'foo')
. Saya harus mengganti kepath('foo/', views.foo, name='foo')
Saya mendapatkan kesalahan ini ketika saya bermain-main dengan string dan kamus.
Jadi yang harus Anda lakukan untuk mendapatkan dict dari string adalah:
Atau dalam hal keamanan kita bisa menggunakan literal_eval
sumber
Kesalahan dalam pertanyaan Anda muncul ketika Anda mencoba sesuatu seperti berikut:
Sulit untuk mengetahui di mana penyebab dalam kode Anda kecuali Anda menunjukkan kode Anda, traceback penuh.
sumber
Saya menghadapi masalah yang disebutkan di atas ketika saya lupa memberikan nama argumen kata kunci ke fungsi url ().
Kode dengan kesalahan
Kode tanpa kesalahan
Jadi akhirnya saya menghapus kesalahan di atas dengan cara ini. Mungkin ada sesuatu yang berbeda dalam kasus Anda. Jadi memeriksa pola url Anda di urls.py .
sumber
Larutan"
Lulus argumen kata kunci nama dengan nilai sebagai pandangan nama Anda misalnya
home
atauhome-view
dll untukurl()
fungsi.Melempar Kesalahan »
url(r'^home$', 'common.views.view1', 'home'),
Benar"
url(r'^home$', 'common.views.view1', name='home'),
sumber
Inilah kesalahan yang direproduksi.
Jika Anda memberikan urutan dan panjang elemen apa pun adalah 1 dan diperlukan dua maka kita akan mendapatkan kesalahan semacam ini. Lihat kode di atas. Pertama kali saya memberi urutan dengan tuple dan panjangnya 1, lalu kami mendapat kesalahan dan kamus tidak diperbarui. kedua kalinya saya memberi di dalam tuple dengan dua elemen, kamus diperbarui.
sumber
Saya mendapat masalah yang sama dan menemukan bahwa itu karena parameter yang salah. Dalam
views.py
, saya menggunakan:Tapi aku menemukan masalah ini:
{'items', items}
. Mengubah untuk{'items': items}
menyelesaikan masalah.sumber
Dalam kasus saya, pandangan saya
get_context_data
di salah satu pandangan saya kembalireturn render(self.request, 'es_connection_error.html', {'error':error});
dalam blok coba / tangkap alih-alih kembalicontext
sumber
Kesalahan harus dengan params. Harap verifikasi bahwa params adalah objek kamus . Jika hanya daftar / tupel argumen, gunakan hanya satu * (
*params
) daripada dua * (**params
). Ini akan meledakkan daftar / tuple menjadi jumlah argumen yang tepat.Atau, jika params berasal dari beberapa bagian lain dari kode sebagai file JSON, silakan lakukan
json.loads(params)
, karena objek JSON terkadang berperilaku sebagai string dan oleh karena itu Anda perlu menjadikannya sebagai JSON menggunakan beban dari string (memuat).Semoga ini membantu!
sumber
Saya mengalami masalah ini ketika mencoba menjalankan metode pembaruan dengan parameter dari tipe yang salah. Dict yang diharapkan adalah:
Yang disahkan adalah:
pastikan Anda memeriksa semua parameter yang Anda lewati adalah dari tipe yang diharapkan.
sumber
Anda salah mengirim satu parameter; itu harus
dictionary object
:Salah:
func(a=r)
Benar:
func(a={'x':y})
sumber
Saya juga memiliki jenis masalah yang serupa. Solusinya sederhana. tapi jangan coba memasukkan nilai NULL atau None ke nilai atau Anda mungkin harus menggunakan Sesuatu seperti ini
dic.update([(key,value)])
sumber