Account.objects.all()을 사용할 때 원하는 슬라이싱을 할 수 있다.

ex Account.objects.all()[1:3:2]

 

class Account(models.Model):
    # 장고 유저와 내가 만든 모델 1대1 연결
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    nickname = models.TextField(max_length="20")
    position = models.TextField(max_length="20")
    
    def __str__(self):
        return self.nickname
    
    class Meta:
        ordering=['id'] # 오름차순 정렬
        #ordering=['-id] 내림차순

 

Model 클래스 안에 Meta 클래스를 선언하고 ordering에 칼럼을 명시하면 해당 칼럼을 기준으로 "-"를 붙이면 내림차순 붙이지 않으면 오름차순으로 객체들이 정렬되어 저장된다.

 

 

django-debug-toolbar를 활용한 sql 디버깅

$pip install django-debug-toolbar

django-debug-toolbar를 설치하고 자신의 django프로젝트의 settings.py의 INSTALLED_APPS에 'debug_toolbar'를 추가해주세요.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'main',
    'debug_toolbar',
]

혹시 자신의 settings.py와 다르더라도 괜찮습니다. 제가 개발하던 프로젝트에서 가져온것이니까요

 

동일하게 settings.py의 MIDDLEWARE에 'debug_toolbar.middleware.DebugToolbarMiddleware' 를 추가해 줍니다.

MIDDLEWARE = [
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

 

sql을 디버깅할 때 확인할 수 있는 정보는 매우 중요한 정보들이기 때문에 자신의 로컬 서버를 작동시켰을 때만 확인할 수 있도록 

settings.py에 INTERNAL_IPS를 추가하고 로컬서버의 ip인 '127.0.0.1'을 넣어줍니다.

INTERNAL_IPS=['127.0.0.1']

다음으로는, 각 앱에 만든 urls.py가 아닌 project 안에 있는 urls.py에

from django.conf import settings

settings를 import 해온 후,

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += [
        path('__debug__/',include(debug_toolbar.urls)),
        ]

위의 코드를 넣어준다. 

 

이후 로컬에서 서버를 키게 되면 화면 우측에 아래와 같은 디버그 툴바가 생겨서 다양한 사항들을 확인할 수 있습니다.

 

* template에 <body> 태그가 없다면 디버그 툴바가 보이지 않습니다. 참고해주세요

 

django-debug-toolbar는 ajax 통신 내역은 디버깅할 수 없습니다. ajax 통신은 django-querycount 패키지를 사용하면 디버깅할 수 있습니다.

 

 

'Django' 카테고리의 다른 글

[Django] Postgresql 연동하기  (0) 2021.02.01
[Django] Django ORM - ForeignKey  (0) 2021.01.08
[Django] django ORM 정리  (0) 2021.01.08
[Django] Django Admin 새롭게 안 사실 정리  (0) 2021.01.08
[Django] Django 개발 환경 세팅  (0) 2020.12.29

+ Recent posts