Je travaille sur un projet dans Django et je viens de commencer à essayer d'étendre le modèle User afin de créer des profils d'utilisateurs.
Malheureusement, j'ai rencontré un problème: chaque fois que j'essaie d'obtenir le profil de l'utilisateur dans un modèle ( user.get_template.lastIP
par exemple), j'obtiens l'erreur suivante:
Environnement: Méthode de demande: GET URL de la requête: http: // localhost: 8000 / Version de Django: 1.1 Version Python: 2.6.1 Erreur de modèle: Dans le template /path/to/base.tpl, erreur à la ligne 19 Une exception a été détectée lors du rendu: trop de valeurs à décompresser 19: Bonjour, {{user.username}} ({{user.get_profile.rep}}). Comment ça va? Se déconnecter Type d'exception: TemplateSyntaxError à / Valeur d'exception: une exception a été détectée lors du rendu: trop de valeurs à décompresser
Des idées sur ce qui se passe ou ce que je fais mal?
Réponses:
Cette exception signifie que vous essayez de décompresser un tuple, mais que le tuple a trop de valeurs par rapport au nombre de variables cibles. Par exemple: ce travail, et imprime 1, puis 2, puis 3
Mais cela soulève votre erreur
soulève
Maintenant, la raison pour laquelle cela se produit dans votre cas, je ne sais pas, mais peut-être que cette réponse vous orientera dans la bonne direction.
la source
obj='{"vendorId": "' + vID +'", "vendorName" :"'+vName+'", "addedDate" : "'+vAddedDate+'","usersList" : "'+ usersList + '," status" : "'+str(vStatus)+'","edit"'+edit+'"}';
bien que toutes les valeurs soient des chaînes, cela me donne une erreur, je l'exécute sur l'invite python, il est en cours d'exécution, mais en prenant la réponse du Web, il me donne cette exception. pouvez-vous s'il vous plaît suggérer ce qui ne va pas.tuple
est en cours de décompression. Il peut s'agir de n'importe quel type de séquence. Il peut autoriser n'importe quel type itérable; Je ne peux pas m'en souvenir.essayez de décompresser dans une variable,
python le traitera comme une liste,
puis décompressez de la liste
la source
Ce problème m'a semblé familier, alors j'ai pensé voir si je pouvais répliquer à partir de la quantité limitée d'informations.
Une recherche rapide a révélé une entrée dans le blog de James Bennett ici qui mentionne que lorsque vous travaillez avec UserProfile pour étendre le modèle User, une erreur courante dans settings.py peut amener Django à lancer cette erreur.
Pour citer l'entrée de blog:
Si l'OP avait copié plus de traceback, je m'attendrais à voir quelque chose comme celui ci-dessous que j'ai pu dupliquer en ajoutant des "modèles" à mon paramètre AUTH_PROFILE_MODULE.
Je pense que c'est l'un des rares cas où Django a encore un peu de magie d'importation qui a tendance à semer la confusion lorsqu'une petite erreur ne lève pas l'exception attendue.
Vous pouvez voir à la fin du retraçage que j'ai posté comment utiliser autre chose que le formulaire "appname.modelname" pour AUTH_PROFILE_MODULE entraînerait la sortie de la ligne "app_label, model_name = settings.AUTH_PROFILE_MODULE.split ('.')" Erreur "trop de valeurs à décompresser".
Je suis sûr à 99% que c'était le problème initial rencontré ici.
la source
AUTH_PROFILE_MODULE
dans votresettings.py
?Il y a probablement une erreur quelque part dans l'appel à get_profile (). Dans votre vue, avant de renvoyer l'objet de requête, mettez cette ligne:
Cela devrait générer l'erreur et vous donner un suivi plus détaillé, que vous pouvez ensuite utiliser pour poursuivre le débogage.
la source
Cela m'arrive lorsque j'utilise Jinja2 pour les modèles. Le problème peut être résolu en exécutant le serveur de développement à l'aide de la
runserver_plus
commande de django_extensions .Il utilise le débogueur werkzeug qui est également beaucoup mieux et dispose d'une très belle console de débogage interactive. Il fait de la magie ajax pour lancer un shell python à n'importe quelle image (dans la pile d'appels) afin que vous puissiez déboguer.
la source