logo
Search검색어를 포함하는 게시물들이 최신순으로 표시됩니다.
    Table of Contents
    [Django] Admin Site

    이미지 보기

    [Django] Admin Site

    • 22.03.08 작성

    • 22.03.09 수정

    • 읽는 데 5

    TOC

    Automatic admin interface

    • 서버 관리자가 활용하기 위한 페이지
    • Model class를 admin.py에 등록 후 관리
    • django.contrib.auth 모듈에서 제공
    • record 생성 여부 확인에 매우 유용
    • 직접 record에 삽입 가능

    admin 생성

    아래의 명령어로 admin 계정을 생성한다.

    python manage.py createsuperuser
    

    console의 안내를 따르면 된다.

    사용자 이름 (leave blank to use 'tmdgn'): admin
    이메일 주소: 
    Password: 
    Password (again): 
    비밀번호가 너무 짧습니다. 최소 8 문자를 포함해야 합니다.  
    비밀번호가 너무 일상적인 단어입니다.
    비밀번호가 전부 숫자로 되어 있습니다.
    Bypass password validation and create user anyway? [y/N]: y  
    Superuser created successfully.
    
    • 이름은 admin으로 하였다.
    • 이메일 주소는 공백 가능
    • Password는 2번 입력한다.
    • Password 보안에 대한 경고가 뜨지만 무시하고 만들 수 있다.

    주의📢 Password 입력 동안에는 console에 보이지 않는다.


    admin 페이지 이동

    • 관리자 계정 생성 → 서버 실행 → /admin → 관리자 페이지 로그인
    image
    • 위와 같은 편집창을 만날 수 있다.

    주의📢 auth에 관련된 기본 테이블이 생성되지 않으면 관리자 계정을 생성할 수 없다.


    admin 등록

    # articles/admin.py
    
    from django.contrib import admin
    from .models import Article
    
    # admin site에 Article을 register
    admin.site.register(Article)
    
    • admin.py는 관리자 사이트에 Article 객체에 관리자 인터페이스를 가지고 있음을 알려주는 것
    • models.py에 정의한 str 형태로 객체 표현

    결과 확인

    image

    아까는 없었던 Articles article이 생겼다.


    image
    • 들어가면 이와 같은 레코드들을 글로 확인할 수 있다.
    • __str__로 정의한 instance 자신의 title, 즉 self.title이 표시된다.

    image

    링크를 타고 들어가면 content도 확인할 수 있다.


    ModelAdmin options : 추가 정보 제공

    list_display

    models.py에 정의한 클래스의 각각의 속성(column)들의 값(record)을 admin 페이지에 출력하도록 설정

    # articles/admin.py
    
    from django.contrib import admin
    from .models import Article
    
    class ArticleAdmin(admin.ModelAdmin):
        list_display = ('pk', 'title', 'content', 'created_at', 'updated_at',)
    
    # admin site에 Article과 ArticleAdmin을 register
    admin.site.register(Article, ArticleAdmin)
    
    • Article 클래스에 정의된 property를 선택적으로 list_display에 넣어준다.
    • 이를 admin.site.register에서 인자로 같이 넣어준다.

    image
    • 이와 같이 Select article to change tab에서 추가한 요소들을 확인할 수 있다.

    list_filter

    • 자동 필터를 해서 article을 필터링할 수 있게 하는 것
    # articles/admin.py
    
    from django.contrib import admin
    from .models import Article
    
    class ArticleAdmin(admin.ModelAdmin):
        list_display = ('pk', 'title', 'content', 'created_at', 'updated_at',)
        list_filter = ('created_at',)
    
    # admin site에 Article을 register
    admin.site.register(Article, ArticleAdmin)
    
    image
    • 특정 field를 기준으로 filter를 설정 가능
    • field를 정의할 때 정의한 datatype에 따라 filter 항목이 달라지는 모양이다.

    항목에 링크를 거는 것

    # articles/admin.py
    
    from django.contrib import admin
    from .models import Article
    
    class ArticleAdmin(admin.ModelAdmin):
        list_display = ('pk', 'title', 'content', 'created_at', 'updated_at',)
        list_display_links = ('title',)
    
    # admin site에 Article을 register
    admin.site.register(Article, ArticleAdmin)
    
    image
    • admin 사이트의 title에 해당 article에 대한 정보로 이동하는 링크를 걸 수 있게 되었다.
    • default는 PK에 해당 article의 세부 정보 페이지로 이동하는 링크가 걸려 있었다.
    profile

    FE Developer 박승훈

    노력하는 자는 즐기는 자를 이길 수 없다