2011-04-23 31 views
0

您好我的get_serving_url的用法是serverside现在我想知道这是否可以在模板中完成,而不是迭代serverside?这个迭代是否必要?

class Ad(GeoModel,search.SearchableModel): 
    ....... 

class Image(db.Model): #migrate to blobstore 
    reference = db.ReferenceProperty(Ad, collection_name='matched_images', verbose_name="Title") 
    primary_image = blobstore.BlobReferenceProperty() 
    ......... 

    class AdHandler(I18NHandler): 
     def get(self, id): 
      ad = Ad.get_by_id(long(id)) 
      image = ad.matched_images.get() 
      url = '' 
      if image: 
       url = images.get_serving_url(str(image.primary_image.key())) 
      if not ad: 
       self.error(404) 
       return 
      imv = [] 
      L = {} 
      table = '' 
      for i in ad.matched_images: 
       if i.primary_image: 
        i1 = images.get_serving_url(str(i.primary_image.key())) 
        imv.append(i1) 
      self.render_template("imageinfo.html", 
           {'url':url, 'imv':imv, 'ad':ad, 'image': image, 
            'logout_url': users.create_logout_url('/'),} 
           ) 
+1

模板_are_服务器端。你真的不清楚你在这里做什么 - 你得到一个关联的Image实体,然后单独获取它们。你能解释一下你想在这里做什么,为什么? – 2011-04-23 02:48:13

+0

感谢您的支持者。我试图遍历所有相关的图像,但没有办法,因为没有标签可以迭代并获得get_serving_url(?) – 2011-04-23 09:29:14

+0

否 - 您应该在代码中执行此操作,然后将结果传递到模板中。 Django模板受设计限制。我仍然不明白为什么要从查询中获取第一个结果,然后再次执行并获取所有结果。 – 2011-04-23 12:54:52

回答

2

我建议您将图像url存储在数据库中。这个url是静态的,每当你做一个get_serving_url时,都会涉及很多CPU时间。当我这样做时,我看到了自己的应用程序的大幅改进。而且,通过这样做,您的最初问题将立即得到解决。