Saya sedang mengerjakan sebuah proyek di Django dan saya baru saja mulai mencoba untuk memperluas model Pengguna untuk membuat profil pengguna.
Sayangnya, saya mengalami masalah: Setiap kali saya mencoba memasukkan profil pengguna ke dalam template ( user.get_template.lastIP
, misalnya), saya mendapatkan error berikut:
Lingkungan Hidup: Metode Permintaan: GET URL Permintaan: http: // localhost: 8000 / Versi Django: 1.1.0 Versi Python: 2.6.1.0 Kesalahan template: Di template /path/to/base.tpl, error di baris 19 Menangkap pengecualian saat merender: terlalu banyak nilai untuk dibuka kemasannya 19: Halo, {{user.username}} ({{user.get_profile.rep}}). Bagaimana itu berjalan? Keluar Jenis Pengecualian: TemplateSyntaxError at / Nilai Pengecualian: Menangkap pengecualian saat rendering: terlalu banyak nilai untuk dibuka kemasannya
Ada gagasan tentang apa yang sedang terjadi atau apa yang saya lakukan salah?
Jawaban:
Pengecualian itu berarti bahwa Anda mencoba untuk mengekstrak tupel, tetapi tupel tersebut memiliki terlalu banyak nilai sehubungan dengan jumlah variabel target. Misalnya: ini bekerja, dan mencetak 1, lalu 2, lalu 3
Tapi ini menimbulkan kesalahan Anda
kenaikan
Sekarang, alasan mengapa ini terjadi dalam kasus Anda, saya tidak tahu, tetapi mungkin jawaban ini akan mengarahkan Anda ke arah yang benar.
sumber
obj='{"vendorId": "' + vID +'", "vendorName" :"'+vName+'", "addedDate" : "'+vAddedDate+'","usersList" : "'+ usersList + '," status" : "'+str(vStatus)+'","edit"'+edit+'"}';
-olah semua nilainya adalah string, itu memberi saya kesalahan, saya menjalankannya pada prompt python itu sedang berjalan, tetapi saat mengambil respons dari web itu beri saya pengecualian ini. bisakah Anda menyarankan apa yang salah.tuple
sedang dibuka. Ini bisa berupa tipe urutan apa saja. Ini mungkin memungkinkan jenis iterable; Saya tidak ingat begitu saja.coba bongkar dalam satu variabel,
python akan menanganinya sebagai daftar,
lalu keluarkan dari daftar
sumber
Masalah ini tampak familiar jadi saya pikir saya akan melihat apakah saya dapat mereplikasi dari jumlah informasi yang terbatas.
Pencarian cepat menemukan entri di blog James Bennett di sini yang menyebutkan bahwa ketika bekerja dengan ProfilPengguna untuk memperluas model Pengguna kesalahan umum dalam settings.py dapat menyebabkan Django membuang kesalahan ini.
Mengutip entri blog:
Jika OP telah menyalin lebih dari traceback saya akan berharap untuk melihat sesuatu seperti di bawah ini yang dapat saya duplikat dengan menambahkan "model" ke pengaturan AUTH_PROFILE_MODULE saya.
Ini saya pikir adalah salah satu dari sedikit kasus dimana Django masih memiliki sedikit sihir impor yang cenderung menyebabkan kebingungan ketika kesalahan kecil tidak memunculkan pengecualian yang diharapkan.
Anda dapat melihat di akhir penelusuran kembali yang saya posting bagaimana menggunakan apapun selain bentuk "appname.modelname" untuk AUTH_PROFILE_MODULE akan menyebabkan baris "app_label, model_name = pengaturan.AUTH_PROFILE_MODULE.split ('.')" Untuk melempar Kesalahan "terlalu banyak nilai untuk dibuka".
Saya 99% yakin bahwa ini adalah masalah asli yang dihadapi di sini.
sumber
AUTH_PROFILE_MODULE
di Andasettings.py
?Kemungkinan besar ada kesalahan di suatu tempat dalam panggilan get_profile (). Dalam pandangan Anda, sebelum Anda mengembalikan objek permintaan, letakkan baris ini:
Ini akan meningkatkan kesalahan, dan memberi Anda pelacakan balik yang lebih mendetail, yang kemudian dapat Anda gunakan untuk debug lebih lanjut.
sumber
Ini terjadi pada saya saat saya menggunakan Jinja2 untuk template. Masalahnya bisa diatasi dengan menjalankan server pengembangan menggunakan
runserver_plus
perintah dari django_extensions .Ia menggunakan debugger werkzeug yang juga jauh lebih baik dan memiliki konsol debugging interaktif yang sangat bagus. Itu melakukan sihir ajax untuk meluncurkan shell python di bingkai apa pun (dalam tumpukan panggilan) sehingga Anda dapat men-debug.
sumber