Просто введите "django-profiling" в Google, вы получите эти ссылки (и не только):
http://code.djangoproject.com/wiki/ProfilingDjango
http://code.google.com/p/django-profiling/
http://www.rkblog.rk.edu.pl/w/p/django-profiling-hotshot-and-kcachegrind/
Лично я использую промежуточное программное обеспечение - то есть каждый пользователь может переключать флаг «профилирования», хранящийся в сеансе, и если мое промежуточное программное обеспечение для профилирования замечает, что флаг установлен, он использует Python hotshot Модуль, как это:
def process_view(self, request, view_func, view_args, view_kwargs):
# setup things here, along with: settings.DEBUG=True
# to get a SQL dump in connection.queries
profiler = hotshot.Profile(fname)
response = profiler.runcall(view_func, request, *view_args, **view_kwargs)
profiler.close()
# process results
return response
РЕДАКТИРОВАТЬ: Для профилирования SQL-запросов http://github.com/robhudson/django-debug-toolbar упомянутое Константином - это хорошо, но если ваши запросы действительно медленные (возможно, потому что их сотни или тысячи), вы будете ждать безумного количества времени, пока он не загрузится в браузер - и тогда будет трудно просматривать из-за медлительности. Кроме того, django-debug-toolbar по своей конструкции не может дать полезную информацию о внутренностях запросов AJAX.
EDIT2: django-extensions имеет встроенную команду профилирования:
https://github.com/django-extensions/django-extensions/blob/master/docs/runprofileserver.rst
Просто сделай это и вуаля:
$ mkdir /tmp/my-profile-data
$ ./manage.py runprofileserver --kcachegrind --prof-path=/tmp/my-profile-data