Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- PARTITION BY
- 머신러닝
- sklearn
- Machine Learning
- 명령어
- Cartesina Product
- ML
- 기본
- CROSS JOIN
- SQL
- 원핫인코딩
- SQLD
- partition
- 사이킷런
- data preprocessing
- django
- Python
- 레이블 인코딩
Archives
- Today
- Total
Programming Blog
5. Django 프로젝트 (2) 본문
장고 모델
객체
- 객체 지향 프로그래밍이란?
: 프로그램이 어떻게 작동해야 하는지 모든 것을 하나하나 지시하는 것 대신, 모델을 만들어 그 모델이 어떤 역할을 가지고 어떻게 행동해야 하는지 정의하여 서로 알아서 상호작용할 수 있또록 만드는 것 - 객체란?
: 속성과 행동을 모아놓은 것, 현실에 존재하는 것을 속성과 행위로 나타내는 것
속성은 객체 속성, 행위는 메서드로 구현된다. - 블로그 글에서 필요한 속성과 메서드는?
: 속성에는 제목, 내용, 작성자, 작성 날짜, 게시 날짜가 있고, 메서드에는 글을 출판하는 메서드가 있다.
장고 모델
- 장고 안의 모델은 객체의 특별한 종류이다. 이 모델을 저장하면 내용이 DB에 저장되는 것이 특징이다.
애플리케이션 만들기
- 애플리케이션을 만들기 위해 콘솔 창(dt디렉토리에서 manage.py 파일)에서 아래 명령어를 실행한다.
명령이 완료되면 blog 디렉터리가 생성되고 그 안에 여러 파일이 생긴다.1python manage.py startapp blogcs 애플리케이션 생성 후 장고에게 사용해야 한다고 알려줘야 하는데 이 역할을 하는 파일이
이 파일이고, 이 파일 안에서 INSTALLED_APPS를 열어서 ] 바로 위에 'blog'를 추가한다.1mysite/settings.pycs
그럼 setting.py에서 장고에게 사용한다고 알려주게 된다.
블로그 글 모델 만들기
- 모든 Model 객체는 blog/models.py 파일에 선언하여 모델을 만든다. 이 파일에 블로그 글 모델을 정의한다.
blog/models.py 파일을 열어서 안에 있는 모든 내용을 삭제 후 밑의 코드를 입력한다.str옆의 __(언더바 2개)는 '던더(dunder; 더블-언더스코어의 준말)'라고도 불린다.1234567891011121314151617from django.db import modelsfrom django.utils import timezoneclass Post(models):author = models.ForeignKey('auth.User', on_delete=models.CASCADE)title = models.CharField(max_length=200)text = models.TextField()created_date = models.DateTimeField(default=timezone.now)published_date = models.DateTimeField(blank=True, null=True)def publish(self):self.published_date = timezone.now()self.save()def __str__(self):return self.titlecs
위의 코드에서 from, import로 시작하는 부분은 다른 파일에 있는 것을 추가하겠다는 뜻이다.
불러오기와 같은 의미이다.
class Post(models.Model): 는 모델을 정의하는 코드이다. (모델 = 객체)
- class는 특별한 키워드로, 객체를 정의한다는 것을 알려준다.
- Post는 모델의 이름이다. 다른 이름을 붙이는 것도 가능하지만, 항상 클래스의 이름 첫 글자는 대문자로 작성한다.
- models 는 Post가 장고 모델임을 의미한다. 이 코드 때문에 장고는 Post가 DB에 저장되야 하는 것을 알게 된다.
title, text, created_date, published_date, author 속성을 정의하기 위해, 필드마다 어떤 종류의 데이터 타입을 가지는지
정해야 한다. 데이터 타입에는 텍스트, 숫자, 날짜, 사용자 같은 다른 객체 참조 등이 있다.
- models.CharField : 글자 수가 제한된 텍스트를 정의할 때 사용된다. 글 제목처럼 짧은 문자열 정보를 저장할 때 사용한다.
- models.TextField : 글자 수에 제한이 없는 긴 텍스트를 위한 속성이다. 블로그 내용(Contents)를 저장할 때 사용된다.
- models.DateTimeField : 날짜와 시간을 의미한다.
- models.ForeignKey : 다른 모델에 대한 링크를 의미한다.
다른 모델의 필드와 정의하는 방법
https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-types
def publish(self): 란? publish라는 메서드(method)이다. def는 함수라는 것을 알리기 위한 예약어이고, publish는
메서드 이름을 의미한다. 이름 변경도 가능하고, 이름을 붙일 때는 공백 대신, 소문자와 언더스코어를 사용해야 한다.
예를 들어, 평균 가격을 계산하는 메서드는 caculate_average_price 라고 메서드 이름을 작성한다.
__str__를 호출하면 Post모델의 제목 텍스트(string)를 return하게 된다.
데이터베이스에 모델을 위한 테이블 만들기
이제 데이터베이스에 새 모델, Post 모델을 추가해야 하는데 먼저 장고 모델에 몇 가지 변화(방금 만든)가 생겼다는 것을 알게 해줘야 한다.
<출력 결과>1234(myvenv) ~/djangogirls$ python manage.py makemigrations blogMigrations for 'blog':blog/migrations/0001_initial.py:- Create model Postcs 위의 코드를 콘솔 창에 입력하여 데이터베이스에 지금 반영할 수 있도록 migration file이라는 것을 준비해 두었다.
이제 python manage.py migrate blog 명령을 실행해, 실제 데이터베이스에 모델 추가를 반영한다.
<출력 결과>123456(myvenv) ~/djangogirls$ python manage.py migrate blogOperations to perform:Apply all migrations: blogRunning migrations:Rendering model states... DONEApplying blog.0001_initial... OKcs
이 작업이 끝나면 글 모델이 데이터베이스에 저장되었다는 것을 알 수 있다.
'Python' 카테고리의 다른 글
7. 배포하기 (0) | 2019.01.24 |
---|---|
6. 장고 관리자 (0) | 2019.01.24 |
5. Django 프로젝트 (1) (0) | 2019.01.24 |
4. 장고 실행을 위한 가상환경 (0) | 2019.01.24 |
3. Django(장고)란? (0) | 2019.01.23 |
Comments