위 글은 점프 투 장고를 참고해 작성하였습니다.
장고 관리자를 사용하기 위해서는 장고 관리자 화면에 접속이 가능한 슈퍼 유저(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 |
Password | 1111 |
비밀번호를 이런식으로 쉽게 입력하면 (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' 추가
여기서 QuestionAdmin
은 admin.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을 참고