Django渲染非常慢

时间:2016-03-11 12:02:39

标签: python django

这是我的训练django项目。我正在使用GeoIP,django-modeltranslation,i18n。显示视频库页面非常慢。该数据库包含大约20个条目。

模型

from __future__ import unicode_literals
from django.db import models
from ckeditor_uploader.fields import RichTextUploadingField
from datetime import datetime
import urllib, json, re
from django.utils.translation import ugettext_lazy as _

class Video(models.Model):
  class Meta:
  abstract = True

  title = models.CharField(max_length=80, unique=True)
  text = RichTextUploadingField()
  link = models.CharField(max_length=80)
  slug = models.CharField(db_index=True,max_length=40,blank=True,null=True)
  created_date = models.DateTimeField(auto_now_add=True)
  pub_date = models.DateTimeField(default=datetime.now())
  is_active = models.BooleanField(default=True)
  position = models.IntegerField(default=0)
  meta = models.TextField(blank=True,null=True)

  def __unicode__(self):
    return self.title

  class VideoMessage(Video):
    class Meta:
      verbose_name = _('VideoMessage')
      verbose_name_plural = _('VideoMessages')

翻译

from modeltranslation.translator import translator, TranslationOptions
from models import VideoMessage

class VideoMessageTranslationOptions(TranslationOptions):
  fields = ('text', 'link', 'meta',)

translator.register(VideoMessage, VideoMessageTranslationOptions)   

浏览

from django.shortcuts import render
from django.views.generic import View
from models import VideoMessage

class Index(View):
  def get(self, request):
    params={}
    messages=VideoMessage.objects.exclude(is_active=False).exclude(link='').order_by('-position')
    params['videos']={}
    params['videos']['message']=messages
    return render(request, 'index.html', params)

gprof2dot tree. 100%= ~2000ms

2 个答案:

答案 0 :(得分:1)

我在每次渲染时都解析了图像。这是个坏主意。

答案 1 :(得分:0)

尝试找出花费最长时间的内容。 您可以使用Opbeat之类的内容来获取免费帐户。您可以看到不同请求需要花费时间的细分,以便您可以专注于任何缓慢的事情。

此外,这是仅在开发期间还是在生产期间发生的?在生产设置中使用DEBUG=True不仅是一个坏主意,而且还会对性能产生重大影响。