리셋 되지 말자

[점프 투 장고] 장고 관리자 본문

Django

[점프 투 장고] 장고 관리자

kyeongjun-dev 2020. 12. 1. 16:29

슈퍼유저

장고 관리자를 사용하기 위해서는 장고 관리자 화면에 접속할 수 있는 슈퍼유저(superuser)를 먼저 생성해야 한다.

$ python manage.py createsuperuser
사용자 이름: admin
이메일 주소: rudwns273@naver.com
Password: 
Password (again):
Superuser created successfully.

 

장고 관리자 화면

슈퍼유저 생성 후, 서버를 시작한 뒤에 localhost:8000/admin 페이지로 접속한다.

createsuperuser에서 생성한 정보로 로그인한다.

 

 

모델 관리

미리 생성해둔 Question 모델을 어드민에 등록해본다.

pybo앱의 디렉토리에서 admin.py에 Question 모델을 등록한다.

from django.contrib import admin
from .models import Question
# Register your models here.
admin.site.register(Question)

그리고 admin 페이지를 다시 접속 또는 갱신한다.

위처럼 Pybo에 Question 모델이 추가된 것을 확인할 수 있다.

Question 모델이 admin에 등록되면 이제 장고 관리자 화면에서 Question 모델을 관리할 수 있다. 신규 질문을 생성할 수도 있고 조회, 수정, 삭제도 가능해 진다.

Question 모델에서 "+추가" 버튼을 클릭한다. 아래처럼 Question 모델을 신규로 생성할 수 있는 화면이 나타난다.

저장을 선택하면 아래와 같이 Question 모델 데이터가 추가된다.

 

모델 검색

관리자 화면에서 제목으로 질문을 검색할 수 있는 기능을 추가해본다.

아래와 같이 pybo/admin.py 파일을 수정한다.

from django.contrib import admin
from .models import Question
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
    search_fileds = ['subject']


admin.site.register(Question)

제목 검색을 위해 search_fields에 'subject'를 추가한다.

이렇게 수정하면 다음처럼 검색기능이 추가된 화면을 볼수 있다.

현재 위의 화면에서는 Question이 Question object(1)로 표시되는데, 여기서 1은 Question 데이터의 id에 해당된다.

아래와 같이 Question 모델에 __str__ 메서드를 추가하면 id대신 제목을 표시하도록 할 수 있다.

from django.db import models

# Create your models here.
class Question(models.Model):
    subject = models.CharField(max_length=200)
    content = models.TextField()
    create_date = models.DateTimeField()

    def __str__(self):
        return self.subject

class Answer(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    content = models.TextField()
    create_date = models.DateTimeField()

모델에 메서드가 추가될 경우에는 makemigrations와 migrate를 수행할 필요는 없다. migrate가 필요한 경우는 모델의 '속성'이 변경되었을 때뿐이다.

 

장고 관리자의 더 많은 기능들은 다음 URL을 참조
https://docs.djangoproject.com/en/3.0/ref/contrib/admin/

 

'Django' 카테고리의 다른 글

[점프 투 장고] URL과 네임스페이스  (0) 2020.12.01
[점프 투 장고] 조회와 템플릿  (0) 2020.12.01
[점프 투 장고] model  (0) 2020.12.01
[점프 투 장고] url과 view  (0) 2020.12.01
[점프 투 장고] 프로젝트 생성  (0) 2020.12.01
Comments