2023년 군 장병 대상 AIㆍSW 인재양성 사업
구름 SW개발 중급과정(PY) Django 실습 정리
가상환경 세팅하기
$ mkdir webserver && cd webserver
$ python -m venv .venv # venv 생성
$ source .venv/bin/activate # venv 활성화 (비활성화는 deactivate)
Django 기본 구성
$ pip install django
$ django-admin startproject webserver # django 프로젝트 생성
$ python manage.py startapp posts # 'posts' 앱 생성
Django 모델링 구성
# settings.py
INSTALLED_APPS = [
...
'posts', # 'posts'라는 앱을 생성했다고 선언
]
# models.py
class Post(models.Model):
title = models.CharField(max_length=200) # 제목 최대 200자 제한
content = models.TextField()
view_count = models.IntegerField(default=0) # 방문자수 기본값 0 설정
created_at = models.DateTimeField(auto_now_add=True) # 글 작성 시 시간 기록
updated_at = models.DateTimeField(auto_now=True) # 글 수정 시 시간 기록
$ python manage.py makemigrations # 주문서 생성 (0001_initial.py)
$ python manage.py migrate # 주문서 확인 후 주문
$ python manage.py shell # ORM 테스트를 위해 쉘 접속
> from posts.models import Post # 모듈 호출
> Post.objects.create(title="first title", content="first content") # Post Table에 객체 생성
> Post.objects.all() # Post Table에 있는 객체 불러오기
> post = Post.objects.get(id=1) # post에 객체 정보 저장
> post.title # 객체 제목 출력
서버 오픈 & 관리자 페이지 접속
$ python manage.py migrate && python manage.py runserver 0.0.0.0:80
- localhost 접속 시 Django 기본 페이지가 출력됨
- 뒤에 /admin 붙여서 접속 시 관리자 페이지로 접속됨
관리자 페이지 계정 생성
$ python manage.py createsuperuser
관리자 페이지에서 Post 앱 관리하기
# admin.py
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = (
'id',
'title',
'view_count',
'created_at',
'updated_at'
)
search_fields = ( # 검색이 가능한 컬럼 설정
'title',
)