我在站点地图模板中使用get_absolute_url。不是sitemap.xml,而是站点布局中显示所有链接的页面。我基本上可以获得所有的页面对象,并使用get_absolute_url在模板中对它们进行iter。
我发现,对于每一个链接,数据库都会被击中一次。如何减少查询?
我想出了两种解决方案,但我不知道哪种方法是最好的:
编辑:
我使用一些简单的代码来生成链接页面:
Views.py:
all_links = mypage.objects.all()模板:
<ul>
{% for link in all_links %}
<li>li><a href="{{link.get_absolute_url}}">{{link.link_title}}</a></li>
{% endfor %}
</ul>models.py:
def get_absolute_url(self):
if self.submenu:
return "/%s/%s/" %(self.submenu.slug,self.slug)
elif not self.mainmenu:
return "/submenu/%s" % self.slug
else:
return "/%s/" % self.slugEdit2:
在生产过程中,我将打开缓存。我认为首先优化是一件好事。
发布于 2017-08-17 09:22:59
我认为使用get_absolute_url很重要,因为sitemap.xml和sitemap页面之间不应该有任何区别。我的解决方案,就目前而言,是这样(总是开放给更好的解决方案)。
我创建了一个模型字段:
absolute_url = models.CharField(max_length=400, blank=True, editable=False)然后进行自定义保存:
def save(self, *args, **kwargs):
self.absolute_url = self.get_absolute_url()
super(mypage, self).save(*args, **kwargs)在我的模板中:
<ul>
{% for link in all_links %}
<li><a href="{{link.absolute_url}}">{{link.menu_title}}</a></li>
{% endfor %}
</ul>这为我节省了很多查询。现在只使用一个链接(而不是每个链接一个查询)。
https://stackoverflow.com/questions/45728283
复制相似问题