Pracuję nad projektem w Django i właśnie zacząłem próbować rozszerzyć model użytkownika o tworzenie profili użytkowników.
Niestety napotkałem problem: za każdym razem, gdy próbuję uzyskać profil użytkownika w szablonie ( user.get_template.lastIP
na przykład), pojawia się następujący błąd:
Środowisko: Metoda żądania: POBIERZ URL żądania: http: // localhost: 8000 / Wersja Django: 1.1.0 Wersja Pythona: 2.6.1 Błąd szablonu: W szablonie /path/to/base.tpl, błąd w linii 19 Złapany wyjątek podczas renderowania: zbyt wiele wartości do rozpakowania 19: Witaj, {{nazwa_użytkownika}} ({{user.get_profile.rep}}). Jak leci? Wyloguj Typ wyjątku: TemplateSyntaxError w / Wartość wyjątku: przechwycono wyjątek podczas renderowania: zbyt wiele wartości do rozpakowania
Jakieś pomysły, co się dzieje lub co robię źle?
Odpowiedzi:
Ten wyjątek oznacza, że próbujesz rozpakować krotkę, ale krotka ma zbyt wiele wartości w stosunku do liczby zmiennych docelowych. Na przykład: ta praca i drukuje 1, potem 2, potem 3
Ale to podnosi twój błąd
podnosi się
Nie wiem, dlaczego tak się dzieje w twoim przypadku, ale może ta odpowiedź wskaże ci właściwy kierunek.
źródło
obj='{"vendorId": "' + vID +'", "vendorName" :"'+vName+'", "addedDate" : "'+vAddedDate+'","usersList" : "'+ usersList + '," status" : "'+str(vStatus)+'","edit"'+edit+'"}';
chociaż wszystkie wartości są ciągami, to daje mi błąd, uruchamiam go na monit Pythona, ale działa, ale podczas pobierania odpowiedzi z sieci to daje mi ten wyjątek. czy możesz zasugerować, co się dzieje.tuple
jest rozpakowywany. Może to być dowolny typ sekwencji. Może dopuścić dowolny iterowalny typ; Nie mogę sobie przypomnieć z ręki.spróbuj rozpakować w jednej zmiennej,
Python potraktuje to jako listę,
następnie wypakuj z listy
źródło
Ten problem wyglądał znajomo, więc pomyślałem, że sprawdzę, czy uda mi się odtworzyć na podstawie ograniczonej ilości informacji.
Szybko okazało się wpis w blogu James Bennetta o którym wspomina, że podczas pracy z UserProfile rozszerzenie modelu użytkownika częstym błędem w settings.py Django może spowodować, aby rzucić ten błąd.
Cytując wpis na blogu:
Gdyby OP skopiował więcej danych śledzenia, spodziewałbym się zobaczyć coś podobnego do tego poniżej, które udało mi się skopiować, dodając „modele” do mojego ustawienia AUTH_PROFILE_MODULE.
Myślę, że jest to jeden z niewielu przypadków, w których Django wciąż ma trochę magii importu, która ma tendencję do wprowadzania zamieszania, gdy mały błąd nie powoduje wyrzucenia oczekiwanego wyjątku.
Możesz zobaczyć na końcu śledzenia, które opublikowałem, w jaki sposób użycie czegokolwiek innego niż formularz „nazwa_aplikacji.modelname” dla AUTH_PROFILE_MODULE spowoduje, że wiersz „app_label, model_name = settings.AUTH_PROFILE_MODULE.split ('.')” Wyrzuci Błąd „zbyt wiele wartości do rozpakowania”.
Jestem w 99% pewien, że był to pierwotny problem, który tu napotkano.
źródło
AUTH_PROFILE_MODULE
w swoimsettings.py
?Najprawdopodobniej gdzieś w wywołaniu get_profile () występuje błąd. Twoim zdaniem, zanim zwrócisz obiekt żądania, umieść tę linię:
Powinno to zgłosić błąd i dać bardziej szczegółowe śledzenie, którego można następnie użyć do dalszego debugowania.
źródło
Dzieje się tak, gdy używam Jinja2 do szablonów. Problem można rozwiązać, uruchamiając serwer deweloperski za pomocą
runserver_plus
polecenia z django_extensions .Używa debuggera werkzeug, który również jest o wiele lepszy i ma bardzo ładną interaktywną konsolę debugowania. Robi trochę magii Ajax, aby uruchomić powłokę Pythona w dowolnej ramce (w stosie wywołań), aby można było debugować.
źródło