Admin 계정 생성
먼저 터미널에 다음과 같은 명령어를 실행
python manage.py createsuperuser
원하는 사용자 이름을 입력
Username : admin
원하는 전자 메일 주소 입력
Email address : pupbani@pupletokki.com
비밀번호 입력
Password : *********
Password (again) : *********
Admin 사이트
서버를 실행하고 /admin/로 접속하기
만들었던 관리자 계정으로 로그인
이 웹 페이지에서는 다양한 권한과 같은 사용자 속성을 변경할 수 있음
History 페이지를 통해 변경 사항을 확인할 수 있음
관리자 페이지에서 데이터베이스 관리
만들어둔 앱 디렉터리 내에 admin.py 라는 파일에 다음과 같은 코드를 삽입해 3개의 테이블을 추가함
from .models import Publisher, Author, Book
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
blank=True을 통해 공백값을 허용하거나 null=True을 통해 NULL 값을 허용하여 필드를 선택적으로 만들 수 있음
class Book(models.Model):
...
publication_date = models.DateField(blank=True, null=True)
verbose_name = '값'을 통해 필드 레이블의 값을 특정한 타입으로 지정할 수 있음
email = models.EmailField(blank=True, verbose_name='e-mail')
# 하이픈을 갖는 전자 메일
admin.py를 수정하여 표시형식을 추가할 수 있음
# admin.py
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name','last_name','email')
...
admin.site.register(Author,AuthorAdmin)
last_filter를 통해 변경 목록 옆에 필터를 만들 수 있음
date_hierarchy로 날짜 드릴다운 탐색 목록이 나타남
ordering을 통해 보여지는 순서를 정렬할 수 있음
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date')
list_filter = ('publication_date',) # publication_date 기준 필터 생성
date_hierarchy = 'publication_date' # 날짜 드롭 다운
ordering = ('-pupblication_date',) # 역순 정렬
편집 양식 사용자 정의
위에서 만들었던 ~Admin 클래스에 필드를 추가하여 편집 양식을 커스텀 할 수 있음
- fields 옵션으로 특정 필드가 완전히 편집되지 않도록 제외할 수 있음
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
fields = ('title','authors','publisher') #publication_date 제외
- filter_horizontal로 편집 폼을 변경할 수 있음(튜플로 지정한 필드만 폼 변경)(ManyToManyField에서만 작동)
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
filter_horizontal = ('authors',) # authors 만 변경
- filter_vertical로 편집 폼을 변경할 수 있음(튜플로 지정한 필드만 폼 변경)(ManyToManyField에서만 작동)
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
filter_vertical = ('authors',)
관리자 웹 사이트는 ForeignKey 필드에 대해 간단한 select 상자를 사용하지만 ManyToManyField의 경우는 드롭 다운에 표시할 모든 관련 개체를 선택해야하는 오버 헤드가 발생하지 않기를 원하는 경우가 있음.
- 위의 문제를 해결하기 위해 raw_id_fields를 사용하면 select 대신 간단한 텍스트 입력 상자로 나타남
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
filter_vertical = ('authors',)
raw_id_fields = ('publisher',)
사용자, 그룹 및 사용 권한
Admin 사이트에 접근할 수 있는 권한 및 계정 생성 등을 생성할 때 역할에 따라 다르게 부여해야함
그룹도 사용자와 마찬가지임
'Back-end & Server > Django' 카테고리의 다른 글
[Django] 고급 기능들 (0) | 2023.01.20 |
---|---|
[Django] 폼(Form) (0) | 2023.01.20 |
[Django] 모델 (0) | 2023.01.16 |
[Django] 템플릿 (0) | 2023.01.01 |
[Django] 뷰와 URLconfs (0) | 2022.12.28 |