Ich arbeite an einem Projekt in Django und habe gerade versucht, das Benutzermodell zu erweitern, um Benutzerprofile zu erstellen.
Leider ist ein Problem aufgetreten: Jedes Mal, wenn ich versuche, das Benutzerprofil in eine Vorlage zu übernehmen ( user.get_template.lastIP
z. B.), wird der folgende Fehler angezeigt:
Umgebung: Anforderungsmethode: GET URL anfordern: http: // localhost: 8000 / Django Version: 1.1 Python-Version: 2.6.1 Vorlagenfehler: In der Vorlage /path/to/base.tpl Fehler in Zeile 19 Beim Rendern ist eine Ausnahme aufgetreten: Zu viele Werte zum Entpacken 19: Hallo, {{user.username}} ({{user.get_profile.rep}}). Wie geht es dir? Ausloggen Ausnahmetyp: TemplateSyntaxError at / Ausnahmewert: Beim Rendern ist eine Ausnahme aufgetreten: Zu viele Werte zum Entpacken
Irgendwelche Ideen, was los ist oder was ich falsch mache?
Antworten:
Diese Ausnahme bedeutet, dass Sie versuchen, ein Tupel zu entpacken, das Tupel jedoch zu viele Werte in Bezug auf die Anzahl der Zielvariablen aufweist. Zum Beispiel: diese Arbeit und druckt 1, dann 2, dann 3
Dies führt jedoch zu Ihrem Fehler
erhöht
Nun, der Grund, warum dies in Ihrem Fall passiert, weiß ich nicht, aber vielleicht zeigt Ihnen diese Antwort die richtige Richtung.
quelle
obj='{"vendorId": "' + vID +'", "vendorName" :"'+vName+'", "addedDate" : "'+vAddedDate+'","usersList" : "'+ usersList + '," status" : "'+str(vStatus)+'","edit"'+edit+'"}';
ob alle Werte Zeichenfolgen sind. Es gibt mir einen Fehler. Ich führe sie an der Python-Eingabeaufforderung aus, die ausgeführt wird, aber während ich die Antwort vom Web entgegennehme gibt mir diese Ausnahme. Kannst du bitte vorschlagen, was schief geht?tuple
dass a entpackt wird. Es kann ein beliebiger Sequenztyp sein. Es kann jeden iterierbaren Typ zulassen; Ich kann mich nicht ohne weiteres erinnern.versuchen Sie in einer Variablen zu entpacken,
Python behandelt es als Liste,
dann aus der Liste auspacken
quelle
Dieses Problem kam mir bekannt vor und ich dachte, ich würde sehen, ob ich aus der begrenzten Menge an Informationen replizieren könnte.
Eine schnelle Suche ergab einen Eintrag in James Bennetts Blog , in dem erwähnt wird, dass bei der Arbeit mit dem UserProfile zur Erweiterung des Benutzermodells ein häufiger Fehler in settings.py dazu führen kann, dass Django diesen Fehler auslöst.
So zitieren Sie den Blogeintrag:
Wenn das OP mehr von dem Traceback kopiert hätte, würde ich so etwas wie das sehen, unter dem ich duplizieren konnte, indem ich meiner Einstellung AUTH_PROFILE_MODULE "Modelle" hinzufügte.
Ich denke, dies ist einer der wenigen Fälle, in denen Django immer noch ein bisschen Importmagie hat, die zu Verwirrung führt, wenn ein kleiner Fehler nicht die erwartete Ausnahme auslöst.
Sie können am Ende des Tracebacks sehen, dass die Verwendung von etwas anderem als dem Formular "appname.modelname" für AUTH_PROFILE_MODULE dazu führen würde, dass die Zeile "app_label, model_name = settings.AUTH_PROFILE_MODULE.split ('.')" Das auslöst Fehler "Zu viele Werte zum Entpacken".
Ich bin mir zu 99% sicher, dass dies das ursprüngliche Problem war, auf das hier gestoßen wurde.
quelle
AUTH_PROFILE_MODULE
in Ihrem habensettings.py
?Höchstwahrscheinlich liegt irgendwo im Aufruf von get_profile () ein Fehler vor. Fügen Sie Ihrer Ansicht nach folgende Zeile ein, bevor Sie das Anforderungsobjekt zurückgeben:
Es sollte den Fehler auslösen und Ihnen einen detaillierteren Traceback geben, den Sie dann zum weiteren Debuggen verwenden können.
quelle
Dies passiert mir, wenn ich Jinja2 für Vorlagen verwende. Das Problem kann gelöst werden, indem der Entwicklungsserver mit dem
runserver_plus
Befehl von django_extensions ausgeführt wird .Es verwendet den werkzeug Debugger, der auch viel besser ist und eine sehr schöne interaktive Debugging-Konsole hat. Es macht Ajax-Magie, eine Python-Shell in einem beliebigen Frame (im Aufrufstapel) zu starten, damit Sie debuggen können.
quelle