"আনপ্যাক করার জন্য অনেকগুলি মান" ব্যতিক্রম


116

আমি জাজানোতে একটি প্রকল্পে কাজ করছি এবং আমি ব্যবহারকারী প্রোফাইল তৈরি করতে ব্যবহারকারী মডেলটি প্রসারিত করার চেষ্টা শুরু করেছি।

দুর্ভাগ্যক্রমে, আমি একটি সমস্যায় পড়েছি: প্রতিবার ব্যবহারকারীর প্রোফাইল কোনও টেমপ্লেটের অভ্যন্তরে পাওয়ার চেষ্টা করি ( user.get_template.lastIPউদাহরণস্বরূপ), আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

পরিবেশ:

অনুরোধের পদ্ধতি: জিইটি
অনুরোধ ইউআরএল: http: // লোকালহোস্ট: 8000 /
জ্যাঙ্গো সংস্করণ: 1.1
পাইথন সংস্করণ: 2.6.1

টেমপ্লেট ত্রুটি:
টেমপ্লেট /path/to/base.tpl এ, লাইন 19 এ ত্রুটি
   রেন্ডার করার সময় একটি ব্যতিক্রম ধরা পড়ে: আনপ্যাক করার জন্য অনেকগুলি মান

19: হ্যালো, {{user.username}} ({{user.get_profile.rep}})। কেমন যাচ্ছে? প্রস্থান


ব্যতিক্রম প্রকার: / এ টেমপ্লেটসিন্ট্যাক্স এরিয়ার
ব্যতিক্রম মান: রেন্ডারিংয়ের সময় একটি ব্যতিক্রম ধরা পড়ে: আনপ্যাক করার জন্য অনেকগুলি মান

কি হচ্ছে বা আমি কী ভুল করছি সে সম্পর্কে কোনও ধারণা?


3
পর্যাপ্ত তথ্য নেই। দয়া করে আপনার ব্যবহারকারী প্রোফাইল মডেলটি পোস্ট করুন।
ড্যানিয়েল রোজম্যান

উত্তর:


189

এই ব্যতিক্রমটির অর্থ হল আপনি একটি টিউপল আনপ্যাক করার চেষ্টা করছেন তবে লক্ষ্য ভেরিয়েবলের সংখ্যার সাথে টিপলের অনেক মান রয়েছে। উদাহরণস্বরূপ: এই কাজটি, এবং 1 টি প্রিন্ট করে, তারপরে 2, তারপরে 3

def returnATupleWithThreeValues():
    return (1,2,3)
a,b,c = returnATupleWithThreeValues()
print a
print b
print c

তবে এটি আপনার ত্রুটি উত্থাপন করে

def returnATupleWithThreeValues():
    return (1,2,3)
a,b = returnATupleWithThreeValues()
print a
print b

উত্থাপন

Traceback (most recent call last):
  File "c.py", line 3, in ?
    a,b = returnATupleWithThreeValues()
ValueError: too many values to unpack

এখন, আপনার ক্ষেত্রে কেন এমনটি ঘটেছিল তা আমি জানি না তবে সম্ভবত এই উত্তর আপনাকে সঠিক দিকে নির্দেশ করবে।


1
@ স্টেরফানো বোরিনি, আমিও একই রকম ত্রুটি পাচ্ছি তবে আমার ক্ষেত্রে, আমি একটি স্ট্রিং তৈরি করছি obj='{"vendorId": "' + vID +'", "vendorName" :"'+vName+'", "addedDate" : "'+vAddedDate+'","usersList" : "'+ usersList + '," status" : "'+str(vStatus)+'","edit"'+edit+'"}';যদিও সমস্ত মানগুলি স্ট্রিং, এটি আমাকে ত্রুটি দেয়, আমি এটি অজগর প্রম্পটে চালাচ্ছি, তবে ওয়েব থেকে প্রতিক্রিয়া নেওয়ার সময় আমাকে এই ব্যতিক্রম দেয়। আপনি কি ভুল হতে পারে দয়া করে পরামর্শ দিতে পারেন?
মেগা বাইটস

যে কেউ এখনও তা পায় নি (যেমন আমি) এই ভিডিওটি একই জিনিসটি ব্যাখ্যা করেছে ... শব্দ এবং ছবি যা কোনওভাবে আমাকে বুঝিয়ে দিয়েছে :)
ওয়েসলি স্মিথ

ত্রুটিটির অর্থ অগত্যা tupleকোনওটি প্যাক করা হচ্ছে না। এটি যে কোনও সিকোয়েন্স টাইপ হতে পারে। এটি কোনও পুনরাবৃত্ত প্রকারের অনুমতি দিতে পারে; আমি হাতছাড়া মনে করতে পারি না।
jpmc26

20

একটি ভেরিয়েবল আনপ্যাক করার চেষ্টা করুন,

অজগর এটিকে একটি তালিকা হিসাবে পরিচালনা করবে,

তারপরে তালিকা থেকে আনপ্যাক করুন

def returnATupleWithThreeValues():
    return (1,2,3)
a = returnATupleWithThreeValues() # a is a list (1,2,3)
print a[0] # list[0] = 1
print a[1] # list[1] = 2
print a[2] # list[2] = 3

4
কেউ এই সম্পর্কে আরও ব্যাখ্যা করতে পারেন?
পিগিগ্যাক

8

এই সমস্যাটি পরিচিত বলে মনে হয়েছিল তাই আমি ভেবেছিলাম যে আমি সীমিত পরিমাণে তথ্যের অনুলিপি করতে পারি কিনা।

একটি দ্রুত অনুসন্ধান এখানে জেমস বেনেটের ব্লগে একটি এন্ট্রি তৈরি করেছে যা উল্লেখ করেছে যে ইউজারপ্রফিলের সাথে ব্যবহারকারী মডেলটিকে প্রসারিত করার জন্য যখন সেটিংস.পি-তে একটি সাধারণ ভুল জঞ্জোকে এই ত্রুটি ছুঁড়ে ফেলতে পারে।

ব্লগ এন্ট্রি উদ্ধৃত:

সেটিংটির মান "অ্যাপনাম.মোডেলস.মডেলনেম" নয়, এটি কেবল "অ্যাপনাম.মডেলনাম"। কারণটি হ'ল জাজানো সরাসরি আমদানি করতে এটি ব্যবহার করছে না; পরিবর্তে, এটি একটি অভ্যন্তরীণ মডেল-লোডিং ফাংশন ব্যবহার করছে যা কেবলমাত্র অ্যাপটির নাম এবং মডেলটির নাম চায়। "অ্যাপনাম.মোডেলস.মদেলনাম" বা "প্রকল্পের নাম। অ্যাপ্লিকেশন। "appname.modelname", এবং অন্য কিছুই, AUTH_PROFILE_MODULE এর মানতে রাখুন।

ওপি যদি ট্রেসব্যাকের আরও অনুলিপি করে থাকে তবে আমি আশা করব যে নীচের মতো এমন কিছু দেখতে পাবে যা আমি আমার AUTH_PROFILE_MODULE সেটিংসে "মডেল" যুক্ত করে সদৃশ করতে পেরেছিলাম।

TemplateSyntaxError at /

Caught an exception while rendering: too many values to unpack

Original Traceback (most recent call last):
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/debug.py", line 71, in render_node
    result = node.render(context)
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/debug.py", line 87, in render
    output = force_unicode(self.filter_expression.resolve(context))
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 535, in resolve
    obj = self.var.resolve(context)
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 676, in resolve
    value = self._resolve_lookup(context)
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 711, in _resolve_lookup
    current = current()
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/contrib/auth/models.py", line 291, in get_profile
    app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')
ValueError: too many values to unpack

এটি আমার মনে হয় এমন কয়েকটি মামলার মধ্যে একটি যেখানে জ্যাঙ্গোর এখনও কিছুটা আমদানি যাদু রয়েছে যা একটি ছোট্ট ত্রুটি যখন প্রত্যাশিত ব্যতিক্রমটি ছুঁড়ে না ফেলে তখন বিভ্রান্তি সৃষ্টি করে।

আপনি ট্রেসব্যাকের শেষে দেখতে পাচ্ছেন যে আমি কীভাবে পোস্ট করেছি AUTH_PROFILE_MODULE এর জন্য "appname.modelname" ফর্ম ব্যতীত অন্য কোনও কিছু ব্যবহার করে "অ্যাপ_লাবেল, মডেল_নাম = সেটিংস.আউথ_প্রেফিল_মোডিএল.স্প্লিট ('।')" ফেলতে হবে "আনপ্যাক করার জন্য অনেকগুলি মান" ত্রুটি।

আমি 99% নিশ্চিত যে এখানেই আসল সমস্যাটি ছিল।


আপনি যদি না পেয়ে AUTH_PROFILE_MODULEথাকেন তবে কী হবে settings.py?
সিনিয়রথস্

0

সম্ভবত_ get_profile () কলটিতে কোথাও একটি ত্রুটি রয়েছে। আপনার দৃষ্টিতে, অনুরোধের বস্তুটি ফেরত দেওয়ার আগে এই লাইনটি রাখুন:

request.user.get_profile()

এটি ত্রুটি বাড়িয়ে তুলবে এবং আপনাকে আরও বিস্তারিত ট্রেসব্যাক দেবে, যা আপনি আরও ডিবাগ করতে ব্যবহার করতে পারেন।


0

আমি যখন টেমপ্লেটগুলির জন্য জিনজা 2 ব্যবহার করছি তখন আমার সাথে এটি ঘটে। জ্যাঙ্গো_ এক্সটেনশনrunserver_plus থেকে কমান্ডটি ব্যবহার করে ডেভলপমেন্ট সার্ভার চালিয়ে সমস্যার সমাধান করা যেতে পারে ।

এটি ওয়ার্কজেগ ডিবাগার ব্যবহার করে যা অনেক বেশি ভাল হয়ে ওঠে এবং খুব সুন্দর ইন্টারেক্টিভ ডিবাগিং কনসোল রয়েছে। এটি কোনও অজ্যাক্স যাদু করে যে কোনও ফ্রেমে পাইথন শেলটি চালু করতে (কল স্ট্যাকের মধ্যে) যাতে আপনি ডিবাগ করতে পারেন।

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