использование GridFS с шаблонами Tornado

у меня проблема при создании цикла с использованием изображений GridFS:

class VentesHandler(BaseHandler): 
    @tornado.web.authenticated 
    def get(self): 
        user = self.get_secure_cookie("mechtari") 
        info = tornado.escape.json_decode(user) 
        email = info["personnel"]["email"] 
        produits = self.db.users.find({"personnel.email":email},{"produit_up":1, "_id":0}).distinct("produit_up") 
        produit_pic_id = self.db.users.find({"personnel.email":email}).distinct("produit_up.avatar.photo") 
        orientation = self.db.users.find({"personnel.email":email}).distinct("produit_up.avatar.orientation") 
        renderer = self.fs 
        self.render("ventes.html", produits=produits, produit_pic_id=produit_pic_id, orientation=orientation, renderer=renderer) 

и шаблон:

{% for produit in produits %} 
{% for id in produit_pic_id %} 
<div class="produit"> 
{% import pymongo %} 
{% if orientation=="portrait" %} <!-- dumb technic to avoid image stretching ^_^ --> 
<span><img src="/{{renderer.get(pymongo.son_manipulator.ObjectId([id for id in produit_pic_id])).filename}}" height="200px" class="imag"> 
 {% else %} 
 <span><img src="/{{renderer.get(pymongo.son_manipulator.ObjectId(id)).filename}}" width="200px"class="imag"> 
 {% end %} 
 </div> 
 </div> 
{% end %} 
{% end %} 
{% end %} 

я получил фотографии, повторяющие время загруженных продуктов! так что если я загрузил 2 товара (product_up), то я получу 4 товара со всеми возможными переключениями картинок товара! кстати, обратите внимание на хак, которого следует избегать (самостоятельно не определяется...), а как насчет импорта? сделать еще одну переменную

x = pymongo.son_manipulator 

чтобы шаблон не загружал весь модуль и не использовал много памяти?


person Abdelouahab Pp    schedule 23.09.2012    source источник


Ответы (1)


решил, была петля в петле. Ответить на группы Google

вот код:

class VentesHandler(BaseHandler): 
    @tornado.web.authenticated 
    def get(self): 
        user = self.get_secure_cookie("mechtari") 
        info = tornado.escape.json_decode(user) 
        email = info["personnel"]["email"] 
        try: 
            produits = self.db.users.find({"personnel.email":email}, {"produit_up":1, "_id":0}).distinct("produit_up") 
            renderer = self.fs 
        except (errors.AutoReconnect, errors.ConnectionFailure): 
            self.redirect("/error") 
    self.render("ventes.html", produits=produits, renderer=renderer) 

шаблон:

{% for produit in produits %} 
<div class="produit"> 
{% from bson import ObjectId %} 
{% if produit["avatar"]["orientation"]=="portrait" %} 
<span><img src="/{{renderer.get(ObjectId(produit["avatar"] ["photo"])).filename}}" height="300px" class="imag"> 
{% else %} 
<span><img src="/{{renderer.get(ObjectId(produit["avatar"] ["photo"])).filename}}"width="300px"class="imag">
{% end %} 
</div> 
{% end %} 
person Abdelouahab Pp    schedule 24.09.2012