본문 바로가기
Personal Project

django로 diary 만들기 [mydiary(글쓰기) 세션 구현] -1

by applepick 2020. 8. 7.
반응형

이번에는 일기를 쓸 수 있도록 기능을 구현해보겠습니다. accounts앱을 만들었던 것처럼 똑같이

py manage.py startapp mydiary

이 것을 메인 프로젝트로 shell을 옮긴뒤 생성해줍니다. urls.py도 선언해줍니다. 전 시간에 해봤죠?

 

글쓰기위해서 models.py에서 모델링을 해줘야합니다.

from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
from django.utils import timezone

class Post(models.Model):
    username = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    photo = models.ImageField(null=True,blank=True)
    content = models.CharField(max_length=4000)
    pub_date = models.DateTimeField(auto_now=True)
    weather = models.CharField(max_length=15)
    emotion = models.CharField(max_length=15)

    def publish(self):
        self.pub_date = timezone.now()
        self.save()
        
    def __str__(self):
        return "%s - %s" % (self.username, self.title)

일기를 작성하려면 Post라는 함수에 유저네임, 일기제목, 사진한개, 일기내용, 업로드날짜, 날씨, 기분을 저장할수 있게 만듭니다. pub_date에다 timezone.now()를 넣으면 현재시간을 넣게됩니다.

___str___은 이제 관리자 페이지에서 볼수있게 유저이름이랑 제목만 간단하게 나타낼수있도록 했습니다.

이렇게 admin페이지에서 보여지는 것입니다. 이렇게 보여주기위해서는 mydiary(자신의 앱)안에있는 admin.py파일로 가셔서

from django.contrib import admin

from .models import Post
# Register your models here.

admin.site.register(Post)

ddd이렇게 선언을 해주어야합니다. admin.py는 django에서 제공하는 관리자페이지를 커스텀해 줄 수있게 하는 것입니다.

이제 모델을 적용했으니 마이그레이션을 해줘야합니다.

# 마이그레이션 파일 생성
$ python manage.py makemigrations <app-name>

# 마이그레이션 적용
$ python manage.py migrate <app-name>

# 마이그레이션 적용 현황
$ python manage.py showmigrations <app-name>

# 지정 마이그레이션의 SQL 내역
 python manage.py sqlmigrate <app-name> <migration-name>

이렇게 마이그레이션을 적용시켜주면 DB에 적용을 시킬 수 있습니다.

이제 모델링을 했으니 views.py에서 동작하게 만들어야겠죠?

이것은 다음시간에 설명해드리겠습니다.

반응형

댓글