Django grappelli로 쓸만한 어드민 만들기

2020. 12. 8. 18:49개발을 파헤치다/Django

반응형

어드민도 UI가 중요하다

 

 

Django의 최고 장점 중 하나는 Model 설계와 API, Admin 개발을 한번에 할 수 있다는 것이죠

아시다시피 이 세가지는 서비스 운영에 있어서 서버 쪽에서는 필수적입니다. 

 

제 개인적인 생각으로 Django에서 기본적으로 제공하는 Admin의 UI는 아주 소규모의 스타트업이나

1인 기업가가 운영과 개발을 동시에 할 때 적합한 것 같습니다. 하지만 운영팀이 따로 있다면 조금 얘기가 달라질 수 있죠.

 

서비스가 수익을 창출하기 위해서는 효율적인 운영이 필수적인데요. 운영팀이 사용하기에 편한 직관적인 UI로 Admin 사이트를 만들어 줄 수 있다면 개발자 입장에서도 굉장히 뿌듯한 일이겠죠? (능력 뿜뿜!!)

 

제가 검토한 Django Admin 템플릿 중에서 grappelli를 소개해볼까 합니다. Django Jet, Django Suite, JetAdmin같이 정말 깔끔하고 예쁜 Admin 인터페이스가 있지만 대부분 유료더군요 (상업용으로 사용할 때 유료입니다. 개인적인 용도로는 추천합니다!)

grappelli는 BSD 라이센스로 마음놓고 사용할 수 있어서 부담없이 적용할 수 있답니다 :)

 

설치방법

 

> pip install django-grappelli

일단 위의 명령어로 grappelli 패키지를 설치해줍니다

 

#settings.py

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

settings.py로 이동해서 INSTALLED_APPS에 grappelli를 추가해줍니다.

이때 반드시 django.contrib.admin 앞에 패키지를 적어주도록 합니다.

 

이제 settings.py안에서 Templates라는 부분에 내용을 추가해주어야하는데요

 

#settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',        
        'DIRS': [],        
        'APP_DIRS': True,        
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',                
                'django.template.context_processors.request',                
                'django.contrib.auth.context_processors.auth',                
                'django.contrib.messages.context_processors.messages',            
                ],        
              },    
         },
 ]

  

위에 보이는 것처럼 옵션을 세팅해줍니다.

django.template.context_processors.request 옵션이 꼭 들어가주어야합니다.

나중에 커스터마이징 할 때 사용자를 바꿔주는 SwitchUser와 Dashboard 기능을 사용하기 위해서 꼭 필요하거든요

 

이제 URL Pattern에 grappelli를 추가해줍니다

 

#urls.py

...
urlpatterns = [
    path('grappelli/',include('grappelli.urls')),  
    path('admin/', admin.site.urls),    
    url(r'^api/', include(router.urls)),
    
   ]

admin 사이트 정의 위에 grappelli url들을 넣어줍니다
이렇게 설정해주면 site.com/admin으로 들어갔을 때 grappelli가 적용된 admin 사이트가 나타나게 됩니다


이제 grappelli 템플릿을 정상적으로 보여주기 위한 Static 파일 설정만하면 되는데요
setting.py에 아래의 내용을 추가합니다

 

# settings.py

...

STATIC_URL = '/static/'
STATIC_ROOT = 'static'

STATIC_URL은 웹상에서 static 파일에 접근할 때 어떤 URL을 사용할 것인지 설정하는 것입니다

 

STATIC ROOT는 서버상에 static 파일이 위치하는 root 경로를 의미하는데요

위에처럼 static이라고 설정하면 프로젝트 폴더에 static이라는 폴더가 생기고 그 안에 모든 static 파일들(html, css 등)이 들어가게 됩니다

 

이제 아래 명령어를 입력해서 static 파일들을 받아줍니다

 

> python manage.py collectstatic

 

 

이제 서버를 돌려보면 grappelli가 적용된 admin 사이트를 볼 수 있습니다

 

> python manage.py runserver <IP>:8000

 

 

 

Admin 사이트에 접속하려면 서버 주소 뒤에 /admin을 붙여주면 됩니다
그라펠리 스타일이 적용되었네요
이제 개발하면서 커스터마이징을 진행하면 그럴듯한 관리자 페이지가 만들어지겠네요

반응형