ত্রুটি: "অভিধান আপডেট ক্রম উপাদান # 0 এর দৈর্ঘ্য 1 রয়েছে; জ্যাঙ্গো 1.4 এ 2 টি প্রয়োজনীয় "


157

জাঙ্গো ১.৪ এ আমার একটি ত্রুটি বার্তা রয়েছে:

অভিধান আপডেট ক্রম উপাদান # 0 এর দৈর্ঘ্য 1 রয়েছে; 2 প্রয়োজন হয়

[Edit]

আমি যখন টেমপ্লেট ট্যাগটি ব্যবহার করার চেষ্টা করেছি তখন এটি ঘটেছিল: মানগুলির জন্য% v এর জন্য `{%:

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

আমি যখন কোনও হস্টোর ক্যোয়ারসেটে অ্যাক্সেস করার চেষ্টা করি তখন এটিও ঘটে:

[সম্পাদনা]

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

কোডটি হ'ল:

tmp = Item.objects.where(HE("kv").contains({'key':value}))

if tmp.count() > 0:

    item_id = tmp[0].id,

আমি শুধু মানটি অ্যাক্সেস করার চেষ্টা করছি। আমি "আপডেট ক্রম" বার্তাটি বুঝতে পারি না। আমি যখন hstore ক্যোরিসেটের পরিবর্তে কার্সার ব্যবহার করি তখন ফাংশনটি কাজ করে। ত্রুটিটি টেমপ্লেট রেন্ডারিংয়েও আসে। আমি কেবল পুনঃসূচনা করেছি uwsgiএবং সবকিছু ভালভাবে কাজ করে তবে ত্রুটিটি পরে ফিরে আসে।

[সম্পাদনা]

কারও ধারণা আছে?


দয়া করে কোডটি পোস্ট করুন যা এতে valuesএবং কী রয়েছে তা দেখায় tmp। কোডটি অনুপস্থিত থাকাকালীন, এই প্রশ্নের জন্য -১ (সম্ভবত অস্থায়ী)।
এলমোভ্যানকিয়েলমো

আমি এটি একটি মন্তব্য হিসাবে যুক্ত করব। আমি ত্রুটি পেয়েছি কারণ আমি টিপলের পরিবর্তে একটি তালিকা ব্যবহার করেছি। এটি ত্রুটিটি উত্থাপন করে: dict(['A',"b"])যদিও এটি হয় নাdict([('A',"b")])
নেলসনগন

উত্তর:


397

শুধু এই সমস্যা মধ্যে দৌড়ে। আমি জানি না যে এটি একই জিনিসটি যা আপনার কোডকে হিট করেছে, তবে আমার কাছে এর মূল কারণটি হ'ল কারণ আমি (বা জাজানো ২.০++) ফাংশন কলের name=শেষ যুক্তিটি রাখা ভুলে গিয়েছিলাম ।urlpath

উদাহরণস্বরূপ, নিম্নলিখিত ফাংশনগুলি প্রশ্ন থেকে ত্রুটিটি ফেলে দেয়:

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

তবে এগুলি আসলে কাজ করে:

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

কারণ ট্রেসব্যাক অকেজো কারণ অভ্যন্তরীণভাবে, জ্যাঙ্গো দেওয়া বিশ্লেষণ করতে চায় অবস্থানগত যেমন যুক্তি শব্দ যুক্তি kwargsএবং যেহেতু একটি স্ট্রিং একটি iterable হয়, একটি এটিপিকাল কোড পাথ প্রকাশ শুরু করে। সর্বদা name=আপনার ইউআরএল ব্যবহার করুন!


40
এই উত্তরটি খুব ভাল কারণ এটি একটি অস্পষ্ট ত্রুটি coversেকে রেখেছে যা খুঁজে বের করা শক্ত। এমনকি পাকা জাজানো বিকাশকারীরাও এই বিশেষ জালে পড়তে পারেন।
glarrain

4
বিশেষত যদি আপনি Router.registerজ্যাঙ্গো রেস্টফ্রেমওয়ার্কের পদ্ধতিটিও ব্যবহার করেন । এটি দেখতে খুব মিল দেখাচ্ছে, পার্থক্যটি হ'ল nameকাওয়ার্গ ...
রিসাদিনহা

4
ভাল যে আধা ঘন্টা অবিক্ষয়মূলক ব্যয় যে আর ফিরে আসতে পারে না। tnx।
ইমান আকবরী

2
উজ্জ্বল! ঠিক আমি কী ভুলে গেছি: এস
আরএসভিউইব

2
এফওয়াইআই আমি জ্যাঙ্গো ২.০ স্টাইলের pathURL ব্যবহার করেও এই ত্রুটি পেয়েছি । Kwarg ব্যবহার করতে ভুলে গেছেন এবং এই ছিল: path('foo/', views.foo, 'foo')। আমি পরিবর্তন করতে ছিলpath('foo/', views.foo, name='foo')
inostia

38

আমি এই ত্রুটিটি পেয়েছিলাম যখন আমি স্ট্রিং এবং ডিকশনারিটি নিয়ে ঘুরতে থাকি।

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

সুতরাং আপনি স্ট্রিং থেকে ডিক পেতে আসলে যা করতে পেরেছিলেন তা হ'ল:

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

বা সুরক্ষার ক্ষেত্রে আমরা আক্ষরিক_আভাল ব্যবহার করতে পারি

from ast import literal_eval

এটি করার অন্য কোনও উপায় আছে?
আদম শামসুদিন

28

আপনি নীচের মতো কিছু চেষ্টা করার সময় আপনার প্রশ্নে ত্রুটি উত্থাপিত হয়:

>>> 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

আপনি যদি আপনার কোড, পুরো ট্রেসব্যাক না দেখান তবে আপনার কোডটির কারণ কোথায় তা বলা শক্ত।


5
এটি নিশ্চিত করে যে কারণটি প্রশ্নের মধ্যে অন্তর্ভুক্ত নয়।
এলমোভ্যানকিয়েলমো

উত্তরের জন্য ধন্যবাদ পরবর্তী সময় আমি ট্রেসব্যাকটি অনুলিপি করব, তবে এটি অদ্ভুত, যখন টেমপ্লেট ট্যাগটি ঘটেছিল ঠিক তখনই উউসগি পুনরায় চালু করার পরে, ফলাফলটি সঠিকভাবে প্রদর্শিত হয়েছিল, তাই ফলাফল ছিল
ব্যবহারকারী 2575627

2
@ ব্যবহারকারী 2575627, আপনি এখন কেন কোড / ট্রেসব্যাক পোস্ট করবেন না? আপনার প্রশ্ন আপডেট করুন (সম্পাদনা করুন)।
ফলসেট্রু

দুঃখিত, আমি কোড / ট্রেসব্যাক পোস্ট করি নি কারণ পরিষেবাটি মেরামত / ঠিক করা জরুরি ছিল, তাই আমি প্রথমবারের মতো ট্রেসব্যাকটি অনুলিপি করিনি
ব্যবহারকারী 2575627

@ ব্যবহারকারী 2575627, আপনি কি / home/name/workspace/project/app/data/commands/my_command.py লাইন 60 এর কাছাকাছি কোড পোস্ট করতে পারেন?
ফলসেট্রু

18

আমি যখন উল্লিখিত সমস্যার মুখোমুখি হয়েছি তখন আমি ইউআরএল () ফাংশনে কোনও কীওয়ার্ড আর্গুমেন্টের নামটি ভুলে যেতে চেয়েছিলাম।

ত্রুটি সহ কোড

 url(r"^testing/$", views.testing, "testing")

ত্রুটি ছাড়াই কোড

url(r"^testing/$", views.testing, name="testing")

সুতরাং অবশেষে আমি উপরের ত্রুটিটি এভাবে সরিয়েছি। এটি আপনার ক্ষেত্রে অন্যরকম হতে পারে। Url.py এ আপনার url নিদর্শনগুলি পরীক্ষা করুন ।


1
2019 এবং একই স্ট্যাকওভারফ্লো উত্তরটি এখনও প্রতিবার আমাকে বাঁচায়
লং এনগুইন

হ্যাঁ, আপনাকে অনেক ধন্যবাদ। বিকাশকারী, বিজ্ঞানী এবং অন্যদের জন্য এসও সত্যই একটি দুর্দান্ত প্ল্যাটফর্ম।
হাইগুল

10

সমাধান »

একটি শব্দ আর্গুমেন্ট পাস নাম আপনার ভিউ নাম যেমন যেমন মান homeবা home-viewইত্যাদি url()ফাংশন।

ত্রুটি নিক্ষেপ »

url(r'^home$', 'common.views.view1', 'home'),

সঠিক »

url(r'^home$', 'common.views.view1', name='home'),


9

এখানে পুনরুত্পাদন ত্রুটি।

>>> d = {}
>>> d.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
>>> 
>>> d
{}
>>> 
>>> d.update([(1, 2)])
>>> d
{1: 2}
>>> 
>>> d.update('hello_some_string')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>  
ValueError: dictionary update sequence element #0 has length 1; 2 is required
>>> 

আপনি যদি ক্রমটি দেন এবং যে কোনও উপাদান দৈর্ঘ্য 1 এবং দুটি প্রয়োজন হয় তবে আমরা এই ধরণের ত্রুটিটি পেয়ে যাব। উপরের কোডটি দেখুন। প্রথমবার আমি টিপল দিয়ে সিকোয়েন্স দিয়েছি এবং এর দৈর্ঘ্য 1, তারপরে আমরা ত্রুটি পেয়েছি এবং অভিধান আপডেট করা হয়নি। দ্বিতীয়বার আমি দুটি উপাদান দিয়ে টুপলে ভিতরে দিয়েছি, অভিধান আপডেট হয়েছে।


আমি শর্টিকালটস.ডাইরেক্ট ব্যবহার করে একই ত্রুটি পাচ্ছি এবং কোনও বহিরাগত পৃষ্ঠায় প্রতিক্রিয়া প্রেরণ করার চেষ্টা করছি .. যেমন '[কোড] ফেরত পাঠানো (" এমএসএন.কম") [/ কোড]
রোবলে

3

আমি একই সমস্যা পেয়েছি এবং দেখেছি এটি ভুল পরামিতিগুলির কারণে was ইন views.py, আমি ব্যবহার করেছি:

return render(request, 'demo.html',{'items', items})    

কিন্তু আমি বিষয়টি পাওয়া গেছে: {'items', items}{'items': items}সমস্যা সমাধানে পরিবর্তন করা হচ্ছে ।


2

আমার ক্ষেত্রে, আমার get_context_dataএক মতামত আমার ফিরে আসার return render(self.request, 'es_connection_error.html', {'error':error});পরিবর্তে চেষ্টা / ক্যাচ ব্লকে ফিরে আসছিলcontext


2

ত্রুটিটি প্যারামগুলির সাথে হওয়া উচিত। অনুগ্রহ করে যাচাই করুন যে প্যারামগুলি একটি অভিধান অবজেক্ট । এটি আর্গুমেন্টের কেবল একটি তালিকা / টুপল হলে *paramsদুটি * ( **params) এর পরিবর্তে কেবল একটি * ( ) ব্যবহার করে । এটি সঠিক পরিমাণে আর্গুমেন্টের মধ্যে তালিকাটি / টিপলটিকে বিস্ফোরিত করবে।

অথবা, যদি প্যারামগুলি কোডের অন্য কোনও অংশ থেকে জেএসএন ফাইল হিসাবে উপস্থিত হয়, দয়া করে করুন json.loads(params), কারণ জেএসওএন অবজেক্টগুলি মাঝে মাঝে স্ট্রিং হিসাবে আচরণ করে এবং তাই স্ট্রিং (লোড) থেকে লোড ব্যবহার করে আপনাকে এটিকে জেএসএন হিসাবে তৈরি করতে হবে।

super(HStoreDictionary, self).__init__(value, **params)

আশাকরি এটা সাহায্য করবে!


1

কোনও ভুল ধরণের পরামিতি সহ আপডেট পদ্ধতিটি চালানোর চেষ্টা করার সময় আমি এই সমস্যার মুখোমুখি হয়েছি। প্রত্যাশিত ডিকটি হ'ল:

{'foo': True}

যেটি পাস হয়েছিল তা হ'ল:

{'foo': "True"}

নিশ্চিত করুন যে আপনি যে সমস্ত প্যারামিটারগুলি পাস করেছেন তা প্রত্যাশিত ধরণের check


0

আপনি একটি প্যারামিটার ভুলভাবে প্রেরণ করছেন; এটি হওয়া উচিত dictionary object:

  • ভুল: func(a=r)

  • সঠিক: func(a={'x':y})


0

আমারও একই ধরণের সমস্যা ছিল। সমাধান সহজ। মানগুলিতে NULL বা কোনটি মান প্রবেশ করার চেষ্টা করবেন না বা আপনাকে এরকম কিছু ব্যবহার করতে হতে পারে
dic.update([(key,value)])

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.