Comment puis-je retourner une liste comme une variable en Python et à utiliser dans Jinja2?
Je suis un très jeune programmeur et je suis en train de faire quelque chose en Python mais je suis coincé. J'ai une liste d'utilisateurs dans Couchdb (à l'aide de python couchdb bibliothèque & Flacon de cadre) qui ont un nom d'utilisateur (qui est le _id) et le courrier électronique. Je veux utiliser la liste d'adresses de courriel dans une zone de sélection dans un jinja2 modèle.
Mon premier problème est de savoir comment accéder aux adresses e-mail. Si je fais:
for user in db:
doc = db[user]
emails = doc['email']
print options
J'obtiens:
email@domain.com
otheremail@otherdomain.com
yetanotheremail@yetanotherdomain.com
Afin que je puisse obtenir ma liste d'e-mails. Mais là où mon brutale inexpérience s'affiche, c'est que je ne sais pas comment les utiliser. La liste n'existe que dans la boucle for. Comment puis-je retourner cette liste comme un utilisable liste de variables? Et comment puis-je faire de cette liste apparaissent dans mon jinja2 modèle dans une option de liste déroulante. Je suppose que j'ai besoin d'une fonction, mais je suis un vert programmeur.
Serait très reconnaissant de l'aide.
OriginalL'auteur Handloomweaver | 2010-10-19
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez un modèle tel que:
Vous pouvez utiliser la méthode statique
load
de l'Utilisateur de la classeVous pouvez désormais le faire:
Mais vous l'utilisez dans le flacon donc, à votre avis, vous pouvez envoyer
cette liste des utilisateurs de votre modèle à l'aide de quelque chose comme ceci:
Maintenant dans le
users.html
jinja2 modèle, la suite de la sortie d'une zone de liste déroulante de chaque utilisateur de l'e-mailAussi, êtes-vous à l'aide de la Fiole-CouchDB extension? Il pourrait être utile dans l'abstraction faible niveau de couchdb de codage: http://packages.python.org/Flask-CouchDB/
Avertissement: Le code ci-dessus n'est pas testé, mais devrait fonctionner correctement. Je ne sais pas beaucoup sur CouchDB, mais je suis familier avec le Flacon. Aussi, évidemment je n'ai pas inclure un plein Flacon/CouchDB application ici, de sorte que des morceaux de code sont manquants.
OriginalL'auteur Josh
Vous passer des paramètres à une jinja modèle comme un dictionnaire
d
lorsque vous appelez latemplate.renderfunction(d)
fonction (par exemple). Ainsi, vous pouvez faire:Ensuite dans le modèle, vous pourriez faire quelque chose comme:
De faire une liste d'e-mails, par exemple, ou de les manipuler toutefois vous le souhaitez.
PS - je suis sûr que le code pourrait être plus élégant/plus optimisé avec une compréhension de liste ou que ce soit, mais j'ai pensé que je devrait mettre l'accent sur la lisibilité pour un soi-disant "vert" programmeur.
OriginalL'auteur nearlymonolith
list
est un terrible nom de la variable. L'un des pires choix possibles.en effet, merci pour le -1.
OriginalL'auteur Paulo Scardine