[Django] 장고의 기본 요소 익히기 - 장고 관리자

싱숭생숭어·2023년 4월 28일
0

Django

목록 보기
7/19
post-thumbnail

위 글은 점프 투 장고를 참고해 작성하였습니다.

슈퍼 유저

장고 관리자를 사용하기 위해서는 장고 관리자 화면에 접속이 가능한 슈퍼 유저(superuser)를 먼저 생성해야 한다.

VSCODE 터미널에 python manage.py createsuperuser 입력

(mysite) gyu@DESKTOP-4OUGKIK:~/workspace/projects/mysite$ python manage.py createsuperuser
사용자 이름 (leave blank to use 'gyu'): admin
이메일 주소: admin@mysite.com
Password: 
Password (again): 
비밀번호가 너무 짧습니다. 최소 8 문자를 포함해야 합니다.
비밀번호가 너무 일상적인 단어입니다.
비밀번호가 전부 숫자로 되어 있습니다.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

(mysite) gyu@DESKTOP-4OUGKIK:~/workspace/projects/mysite$ 

아래와 같이 슈퍼유저를 생성하였다. password는 입력해도 창에 보이지 않는다.

항목
사용자 이름admin
이메일 주소admin@mysite.com
Password1111

비밀번호를 이런식으로 쉽게 입력하면 (ex 123, 1111) 비밀번호 관련 경고가 3번이나 출력된다. 하지만 y를 입력하여 그대로 진행 가능하다.


장고 관리자 화면

슈퍼 유저 생성 후 터미널에 python manage.py runserver를 통해 개발 서버를 구동한 후 http://localhost:8000/admin/ 페이지에 접속 시 아래와 같은 화면을 볼 수 있다.

여기에 앞서 생성한 user인 admin과 1111을 입력하면 다음과 같은 관리자 화면이 나타난다.


모델 관리

앞선 포스팅에서 생성한 Question 모델을 관리자에 등록할 수 있다.

pybo/admin.py파일을 아래와 같이 수정한다.

from django.contrib import admin
from .models import Question

admin.site.register(Question)
  • admin.site.register로 Question 모델을 등록

  • 관리자 페이지에 모델을 등록하기 위해서는 각 어플리케이션 안에 있는 admin.site.register(class이름)을 사용해야 하고 모델의 class 이름을 사용하기 위해 admin.py 맨 위에서 각 class들을 import 해줘야 함

  • admin.site.register이 이해가 안가서 찾아봤는데, 이 함수는 django의 기본 함수로! django contrib 패키지의 admin site에 등록한다는 의미로 해석하면 될 듯 하다...
  • 장고에서 제공하는 admin 페이지에 개발자가 만든 model을 등록하면 해당 model을 GUI 환경(admin 페이지)에서 관리가 가능해진다 ~!
  • 여기서 Question은 model이자 class !(모든 모델은 models.py를 열어보면 class 형식으로 이루어져 있다.)

장고의 admin 페이지를 새로고침하면 아래처럼 Question 모델이 추가된 화면을 볼 수 있다.

이제 장고 관리자 화면에서 Question 모델을 관리 가능하다. 신규 질문 생성 및 조회, 수정, 삭제가 가능하다.

위와 같이 입력 항목에 데이터를 추가하고 저장 버튼을 클릭하면 다음 처럼 Quesiton 데이터가 추가된다.


모델 관리

관리자 화면에서 제목(suject)로 질문 데이터를 검색할 수 있다.

pybo/admin.py 파일을 아래와 같이 수정한다.

from django.contrib import admin
from .models import Question


class QuestionAdmin(admin.ModelAdmin):
    search_fields = ['subject']		#검색이 가능한 속성 = 'subject'


admin.site.register(Question, QuestionAdmin) #admin 페이지에 Question, QuestionAdmin 클래스 등록 
  • Question 모델에 세부 기능을 추가할 수 있는 QuestionAdmin 클래스를 생성

  • 제목 검색을 위해 search_field 속성에 'subject' 추가

  • 여기서 QuestionAdminadmin.ModelAdmin 클래스를 상속받는 클래스임.
    admin.ModelAdmin 클래스는 admin 인터페이스(기본 장고에서 제공)에 있는 모델을 나타내고, admin.py에 저장되어있음

  • 이 부분도 위와 같이 admin.ModelAdmin이 장고에서 기본으로 제공하는 기능이라고 생각하면 편하다. 앞서 model 등록만 가능한 admin.site.register와 달리, admin.ModelAdmin 상속을 통해 커스터마이징한 class를 생성할 수 있다.

위 코드 실행 시 아래처럼 검색기능이 추가된 화면을 볼 수 있다.

검색창에 '장고'를 입력하면, 제목(subject)에 '장고'라는 문자열이 있는 Question 데이터가 조회된다.

아래 코드와 같이 데코레이터를 활용해도 같은 결과의 페이지를 생성할 수 있다.

from django.contrib import admin
from .models import Question

@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    search_fields = ['subject']

장고 관리자(admin)의 또다른 기능들은 아래 URL을 참고

profile
공부합시당

0개의 댓글