Django Admin
Django는 기본으로 Admin앱을 제공한다.
INSTALLED_APPS = [
...
'django.contrib.admin'
]
이 관리자 사이트를 커스터 마이징 하여 빠르게 초기 개발을 할 수 있다.
아래와 같이 Post모델을 만들었다.
Model.py
from django.db import models
from django.contrib.auth.models import Userclass Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User,on_delete=models.CASCADE)
모델을 생성하고 admin페이지를 가보면 아래과 같이 Post 모델을 생성했는데 Post모델이 보이지 않는다.
생성한 모델을 관리자 사이트에 등록 안했기 때문이다. 관리자 사이트에 등록하는 방법은 두가지가 있다.
- 기본적인 등록
from django.contrib import admin
from . import modelsclass PostAdmin(admin.ModelAdmin):
list_display = (
'title',
'content',
'created_at',
'updated_at',
'author'
)
list_display_links = (
'title',
'author'
)admin.site.register(models.Post , PostAdmin)
2. 데코레이터 활용
from django.contrib import admin
from . import models@admin.register(models.Post)
class PostAdmin(admin.ModelAdmin):
list_display = (
'title',
'content',
'created_at',
'updated_at',
'author'
)
list_display_links = (
'title',
'author'
)
클래스 안에 Admin페이지에 사용될 옵션이 여러가지 있다. 위에서는 list_display , list_display_links 두가지를 사용한 경우이다.
위와같이 설정하고 다시 admin 페이지를 들어가 보면 아래와 같이 커스터마이징 된 화면을 볼 수 있다.