Django(장고) admin

장현웅·2023년 9월 5일
0

만들어진 모델 데이터를 Django admin 관리자 페이지에서 직접 조작해보겠다.

Django Admin (관리자 페이지)

Django 웹 어플리케이션의 관리자 영역을 만들어주는 Django 프레임워크에서 제공하는 기능

이 페이지를 통해

1) Django Model을 사용하여 데이터베이스 테이블을 관리할 수 있다. 데이터베이스에 Model 클래스를 등록하면 해당 Model의 데이터를 쉽게 CRUD 할 수 있다.

2) 사용자 및 권한을 할당하는 등 관리할 수 있고, 사이트의 다양한 측면을 관리할 수 있다.

Django Admin


장고 서버를 실행시키고, http://127.0.0.1:8000/admin 으로 접속

admin 페이지에 로그인 하기 위해서는 관리자 계정을 만들어야한다.

[터미널]

python manage.py createsuperuser

위 코드를 터미널에서 실행하여 계정을 만들면 아래에 보이듯 데이터베이스에도 추가되는 것을 볼 수 있다.

이제 admin 페이지에 로그인해서 나의 관리자 계정이 추가되었는지 보자.

todo 모델을 데이터 베이스에 등록했는데 admin 페이지에는 todo 모델의 정보가 올라와있지 않다.

todo 모델 데이터를 데이터베이스와 연결해줬듯이 admin과도 연결을 해줘야한다.

admin.py에서 todo Model 클래스를 추가해주겠다.

admin.py


admin.py

관리자 페이지와 관련된 설정을 정의한다.

이 파일을 통해 어떤 모델을 어떻게 관리할지를 설정할 수 있다.

1) admin.py 파일에서 admin.site.register(Model)를 사용하여 모델을 관리자 페이지에 등록하면 관리자 페이지에서 관리할 수 있게 된다.

2) 해당 모델의 추가적인 설정(커스터마이징)이 필요한 경우,@admin.register(Model) 데코레이터로 모델을 등록학고 admin.ModelAdmin 클래스 상속을 사용하여 모델 클래스의 사용자 지정 설정을 적용할 수 있다.

admin.site.register(Model) 메서드 : Model은 모델 클래스의 이름

Django의 관리자 페이지에 특정 모델을 등록하는 역할

모델을 등록하면 해당 모델의 레코드를 생성, 조회, 수정, 삭제할 수 있는 인터페이스를 관리자 페이지에 제공한다.

[App Directory/admin.py]

from django.contrib import admin
from todo.models import Todo		# admin 페이지에서 todo 모델을 관리해주기 위해 임포트 
>
admin.site.register(Todo)


admin 페이지에 todo 앱이 추가된 것을 볼 수 있다.

이제 todo에서 게시물 추가를 해보자.

게시물 추가를 해보니 게시물이 'Todo object'의 형식으로 저장된다.(?)

이 때 __str__ 메소드를 사용하면 된다.

__str__ 메소드

클래스 내부에 정의된 특별한 메서드로, 해당 클래스로 만들어진 인스턴스 자체를 출력할 때, 문자열로 표현할 때 사용되는 메서드로 Django의 Model 클래스가 admin 페이지에서 어떻게 출력되는지 정의해주는 역할을 한다.

[App todo/models.py]

from django.db import models


class Todo(models.Model):                               # Todo Model 클래스는 django models 모듈의 model 클래스를 상속
  content = models.TextField()
  created_at = models.DateTimeField(auto_now_add=True)  # 만들 때 알아서 시간 기록
  updated_at = models.DateTimeField(auto_now=True)      # 수정할 때 알아서 시간 기록
  is_done = models.BooleanField(default=False)

  def __str__(self):									# 'self'는 파이썬 클래스의 메서드 정의에 사용되는 특별한 첫 번째 매개변수로, 해당 클래스의 인스턴스(객체)를 나타낸다.
    return self.content									# 'self'를 통해 메서드 내부에서 현재 객체의 속성에 접근하여 문자열로 반환한다.
    													# return 형태는 문자열 생성 방법에 따라 다를 수 있다. 
                                                        # 문자열 포맷팅으로 객체의 속성을 문자열에 포함시키는 f-string을 사용하여 문자열을 생성할 수도 있다.



혹시 모를 에러를 대비해서 이 단계는 모델을 만들면 항상 확인해야한다.

다음엔 URL API 요청으로 데이터를 Create 해보겠다.

0개의 댓글