Django 개발 (1)

RXDRYD·2021년 8월 19일
0

blog 이름의 app 생성

(venv) ᐅ python manage.py startapp blog

blog > models.py 수정

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=30) // 타이틀 
    	// CharField 는 반드시 max_length 를 설정해주어야함. 
    content = models.TextField() // 내용 
    created = models.DateTimeField() // 작성시간 
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    	// User 가 삭제될 경우 어떻게 처리할지 설정 
        // django 2.x 버전 : on_delete=True 
        // django 3.x 버전 : on_delete=models.CASCADE 

    def __str__(self):
        return '{} :: {}'.format(self.title, self.author)
        // 따로 설정하지 않을 경우 blog 포스트 목록에 PostObject(1)처럼 표시되어 제목과 작성자를 목록에 표시해주기

blog > admin.py 수정

from django.contrib import admin
from .models import Post

admin.site.register(Post)

django 는 기본적으로 admin 페이지 기능을 제공함

superuser 생성

(venv) ᐅ python manage.py createsuperuser
Username (leave blank to use 'rxdryd'): rxdryd
Email address: rxdryd@test.com
Password:
Password (again):

Superuser created successfully.

생성한 superuser로 Login

blog migration 수행

(venv) ᐅ python manage.py makemigrations
No changes detected
(venv) ᐅ python manage.py makemigrations blog
No installed app with label 'blog'.

No installed app 이라는 결과가 나올 경우 mysite > settings.py 수정필요

INSTALLED_APPS = [
    
    // default 
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'blog', //  생성한 app blog 한줄 추가 
]

migration 재수행

(venv) ᐅ python manage.py makemigrations blog
Traceback (most recent call last):
...
...
File "/Users/projects/blog/models.py", line 9, in Post
    author = models.ForeignKey(User)
TypeError: __init__() missing 1 required positional argument: 'on_delete'

on_delete 에 argument 가 빠졌다는 TypeError 발생할경우, 뒤에 인자추가
author = models.ForeignKey(User, on_delete=models.CASCADE)

다시 migration 재수행

(venv) ᐅ python manage.py makemigrations blog
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Post
    
(venv) ᐅ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0001_initial... OK

blog 아래 migrations 하위 내용은 버전관리 불필요.
변경내용이 있을 때 마다 0001_initial.py 같은 새로운 파일이 생성된다.

TimeZone 불일치

mysite > settings.py 수정

변경 전 : TIME_ZONE = 'UTC'
변경 후 : TIME_ZONE = 'Asia/Seoul'

Now 를 클릭하면 정상적으로 현재시간이 동일하게 표시된다.

참고

https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC/dashboard

profile
정리데쓰

0개의 댓글