- 모든 장고 프로젝트는 1개 이상의 앱으로 구성된다. 이때 '앱'은 '특정한 기능을 수행하는 단위 모듈'로 생각하면 된다.
blog앱과 single_pages 앱 만들기
python manage.py startapp blog
python manage.py startapp single_pages
- 위 두 명령어를 이용 하면 아래와 같이 2가지 앱이 추가적으로 생성된다.
모델 만들기
- 장고의 장점중 하나는 모델을 이용해 장고 웹 프레임워크 안에서 데이터베이스를 관리할 수 있다는 것이다.
블로그 글을 위한 모델 만들기
- Post 모델 만들기
- blog/models.py를 열어 다음과 같이 입력
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
created_at = models.DateTimeField()
- settings.py에 blog 앱 등록하기
- 데이터베이스에 Post 모델 반영하기
python manage.py makemigrations
- 다음 DB 내용은 레포지터리에 안올라가는것이 좋다. 또한 지금 임시로 sqllite3로 관리하고 있는것이기 때문에 migrations 폴더는 gitignore 시켜주도록 한다.(추후 배포했을시 로컬 db와 서버 db의 내용이 맞지 않아 문제가 생길 수 있다.)
python manage.py migrate
관리자 페이지에서 첫 포스트 작성하기
- blog/admin.py
from django.contrib import admin
from .models import Post
# Register your models here.
admin.site.register(Post)
- 서버를 실행시키고 admin 페이지로 접속하면 다음과 같이 뜬다. 우리가 등록한 Blog 앱이 뜨고 밑에 Post
- 이렇게 글을 작성할 수도 있다.
포스트 개선하기
- __str__() 함수로 포스트 제목과 번호 보여주기
- 지금 보면 게시글 제목이 표시가 안되고 다음과 같이 나타난다. 이 문제를 해결해 보자!!
- blog/models.py를 다음과 같이 수정한다. Post 클래스에 def __str__() 메서드를 추가한다.
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
created_at = models.DateTimeField()
def __str__(self):
return f'[{self.pk}]{self.title}' # 파이썬 f-string을 이용해서 게시글 id, 제목 노출
- 특정 지역 기준으로 작성 시각 설정하기
- 지금 보면 게시글 작성 시간대가 내가 실제로 작성한 시간이 아니다. 표준시각을 서울 시간 기준으로 고쳐줘보자.
- 본인 프로젝트/settings.py를 열어서 다음과 같이 수정해준다.
- 자동으로 작성 시각과 수정 시각 저장하기
- blog/models.py
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True) # auto_now_add 옵션 추가
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f'[{self.pk}]{self.title}'
- models.py를 수정 했으므로 migration을 시켜야 한다.
- makemigrations -> migrate -> runserver
'Programming > Django' 카테고리의 다른 글
테스트 주도 개발 적용해보기 (0) | 2023.03.25 |
---|---|
장고(Django) 페이지 구성 개선하기 (0) | 2023.03.19 |
장고(Django) 정적 파일과 미디어 파일 관리하기 (0) | 2023.03.18 |
장고(Django) 웹 페이지 만들기 (0) | 2023.03.18 |
장고(django) 기초 (0) | 2023.03.18 |