python渲染html模板_python – Django模板渲染速度

我在使用预取查询集渲染

django模板时遇到了性能问题,这个模板并不是很大(生产环境中约1000个对象/开发环境中约200个对象),但有几个嵌套级别.

这是预取:

stories = Story.objects.select_related(

'commande',

'commande__societe',

'commande__plateforme',

'client',).prefetch_related(

Prefetch('crm_message_related',

queryset=Message.objects.select_related(

'societe',

'plateforme',

'type_message').order_by('-date_received')),

Prefetch('commande__crm_feedback_related'),

Prefetch('commande__crm_guarantee_related'),

Prefetch('commande__soyouz_item_related',

queryset=Item.objects.select_related(

'etat', 'produit', 'produit__produit_enhanced', )),

Prefetch('commande__tagged_items__tag'),

Prefetch('commande__soyouz_item_related__tagged_items__tag'),

Prefetch('commande__soyouz_item_related__soyouz_annulationclient_related'),

Prefetch('commande__soyouz_item_related__soyouz_achat_related'),

Prefetch('commande__soyouz_item_related__soyouz_achat_related__soyouz_receptionachat_related'),

Prefetch('commande__soyouz_item_related__soyouz_achat_related__soyouz_annulationachat_related'),

Prefetch('soyouz_action_related'),

Prefetch('soyouz_action_related__receptionmessage__message',

to_attr='receptionmessages',

queryset=Message.objects.order_by(

'-date_received').select_related(

'societe', 'type_message', 'plateforme'))

).order_by(

'-commande__date_commande',

'-date_created'

).all().distinct()

SQL运行顺利,这不是问题.

问题是当我尝试渲染我的模板时,女巫是基本的

{% for story in stories %}

{% with items=story.commande.soyouz_item_related.all %}

{% for item in items %}

{% for tag in item.tagged_items.all %}

{{ tag.tag }}

{% endfor %}

{{ item.titre|safe|truncatechars:50 }}

{% endfor %}

{% endfor %}

在生产环境中显示页面大约需要10秒.

name Times Tot Time Queries Queries Time

stories.html 1 2814,1 ms 0 0 ms

3个循环,包含200个数据(在开发环境中)3秒?看起来很多.

有什么想法可以提高模板渲染的速度吗?

非常感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值