웹 프로그래밍

[Django Tutorial] Blog 만들기 (2)

728x90
반응형

모델 코딩 (models.py)

  • Django에서는 모델이라는 파이썬 객체를 통해 데이터에 접속하고 관리한다.
  • 모델: 저장된 데이터의 Schema를 정의한다. 
  • 모델은 models.py에서 정의되며 이들은 django.db.models.Model 을 상속받은 서브클래스로 구현된다.
from django.db import models
from django.urls import reverse

class Post(models.Model):

    title= models.CharField(verbose_name='TITLE',max_length=50) #제목
    description= models.CharField('DESCRIPTION', max_length=100, blank=True, help_text='simple description text.' )#요약
    content= models.TextField('CONTENT') #글내용
    create_dt= models.DateTimeField('CREATE DATE', auto_now_add=True) #생성날짜와 시간
    modify_dt= models.DateTimeField('MODIFY DATE', auto_now=True )#수정날짜와 시간

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=(self.id,)) #id는 장고에서 자동으로 지원해준다

    def get_prev(self):
        return self.get_previous_by_modify_dt()
    
    def get_next(self):
        return self.get_next_by_modify_dt()

title: verbose_name은 컬럼에 대한 별칭으로 임의로 넣어주면 됨.

description: 공백가능하니까 blank=True

content: 블랭크 트루 또는 널 트루가 없다. 내용이 반드시 존재해야한다.

create_dt: auto_now_add 속성으로 생성시간을 django가 자동으로 기록하게한다.

modify_dt: auto_now 속성으로 django가 수정시간을 자동으로 기록

 

get_previous_by_modify_dt() : django에서 지원한다. modify_dt를 기준으로 이전의 포스트 객체를 리턴한다.

get_next_by_modify_dt() : modify_dt를 기준으로 다음 포스트 객체를 리턴해준다.

 

 

admin.py

  • 만든 테이블을 admin site에 등록하는 과정
from django.contrib import admin
from blog.models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display=('id','title','modify_dt')

admin.site.register() 대신 데코레이터 사용

list_display: admin site에 보여줄 항목들을 정의

 

터미널에서 python manage.py makemigrations 실행

python manage.py migrate //테이블이 db에 반영됨

 

 

Run server를 위한 환경설정

파이참 Run/Debug Configurations > + > Python > 이름설정(ex. BlogRun) > Script Path를 manage.py 경로로 

> Parameters는 runserver 입력 > OK

 

실행시켜 /admin/ 접속후 확인하면 django에서 기본으로 제공하는 Groups, Users와 우리가 입력한 Posts를 확인할 수 있다. (Post에 s는 django가 자동으로 붙여준것이다. )

728x90
반응형