2021. 12. 30. 17:08ㆍ강의 정리/Django Models
Django-debug-toolbar
- 현재 request / response에 대한 다양한 디버깅 정보를 보여줌.
- 다양한 Panel 지원 # Panel은 창을 의미함.
SQLPanel을 통해, 각 요청 처리시에 발생한 SQL 내역 확인 가능 #Ajax 요청에 대한 지원은 불가능함.
#django debug toolbar 설치
https://django-debug-toolbar.readthedocs.io/en/latest/
0. urls.py에 아래 코드 추가
path('__debug__/', include('debug_toolbar.urls')),
1. settings.py의 INSTALLED_APPS에 'django_toolbar' 추가, MIDDLEWARE에 아래 코드 추가
# MIDDLEWARE은 장고에서 각 요청을 처리하는 로직이 호출되기 전에 호출되는 함수들을 일컬어 부른다.
"debug_toolbar.middleware.DebugToolbarMiddleware",
INTERNAL_IPS 입력 #보안을 위해서 특정 IP에서만 디버깅할 수 있게 해줌
INTERNAL_IPS = ['127.0.0.1']
위 과정까지 끝냈는데 혹시 DDT가 웹페이지에 나오지 않는다면 아래 방법을 따라해보자!
0. 레지스트리 편집기에서 컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.js를 검색해서 들어가자
1. 들어가면 Content Type이 보일 것이다. 들어가서 값 데이터를 application/javascript 로 바꿔준다
2. Django 서버를 닫았다가 다시 열면 문제가 해결될 것이다~!
만약 웹사이트를 서비스 중인데 어느 순간부터 사이트의 속도가 많이 느려졌다면, SQL을 확인해보자. 의도치않게 SQL이 과도하게 작업중인 경우들이 많다.
주의사항 : 웹페이지의 템플릿 (HTML)에 반드시 "<body>" 태그가 있어야만, django-debug-toolbar가 동작한다.
cuz : dbt의 html / script 디폴트 주입 타겟이 </body> 태그이기 때문이다.
코드를 통해서 SQL 내역을 확인할 수도 있다.
- settings.DEBUG = True일 때만 쿼리 실행 내역을 메모리에 누적한다. # 실 서비스를 운영할때는 반드시 DEBUG를 꺼놓아야 한다. 안그러면 메모리가 과누적된다.
from django.db import connection, connections
for row_dict in connection.queries:
print('{time} {sql}'.format(**row_dict))
connections['default'].queries
- 쿼리 초기화
메모리에 누적되기에, 프로세스가 재시작되면 초기화
django.db.reset_queries() 통해서 수동 초기화도 가능
'강의 정리 > Django Models' 카테고리의 다른 글
관계를 표현하는 모델 필드 #OneToOneField (0) | 2022.01.03 |
---|---|
관계를 표현하는 모델 필드 #ForeignKey (0) | 2021.12.31 |
동백 // QuerySet에 정렬 조건 추가 (0) | 2021.12.30 |
동백 // QuerySet을 통한 간단 검색 구현 (0) | 2021.12.30 |
동백 // Django 모델을 통한 조회 ( 기초 )Q (0) | 2021.12.30 |