일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- queryset
- pyhcarm
- 백준
- GIT
- get_object_or_404
- python3
- delphi 10.3
- Push
- advColumnGrid
- anaconda3
- MSSQL
- dbadvgrid
- 중복제거
- declare
- python 3.7
- rank
- Django
- github
- HTML
- Delphi
- hackerrank
- TMS
- templates
- COMMIT
- PyCharm
- 델파이
- pythonanywhere
- Visual Studio
- c#
- blog
- Today
- Total
DevHyun
[DevHyun's Blog] Django&Python으로 Blog 만들기 - Blog의 게시글 Model 만들기 본문
[DevHyun's Blog] Django&Python으로 Blog 만들기 - Blog의 게시글 Model 만들기
D3V3L0P3R 2020. 10. 16. 14:04
장고걸스 코치들과 자원봉사자들의 수고로 번역된 글을 참고하였습니다.
1. Django 모델에 대한 이해
- Django의 내장 ORM(Object-relational mapping 단순하게 표현하면 객체와 관계와의 설정)
- ORM의 역할 : SQL을 직접 작성하지 않아도 장고 모델을 통해 데이터베이스로 접근한다. (조회/추가/수정/삭제)
2. annaconda3에서 가상환경 activate 한 후 Blog 프로젝트 생성!
conda activate devhyun cd c:\django django-admin startproject DevhyunDjangoBlog |
3. pycharm 에서 open project
4. run - edit configurations 에서 interpreter를 Devhyun(가상환경)의 python 3.7로 변경
5. run - edit configurations 에서 parameters를 runserver로 변경
6. run 테스트 성공적!
7. file - settings - Project : DevhyunDjangoBlog 에서 interpreter를 Devhyun(가상환경)의 python 3.7로 변경
8. file - settings - tools - terminal 에서 shell path를 아래와 같이 변경
* anaconda3 경로
* 가상환경 이름
cmd.exe " /K" C:\ProgramData\Anaconda3\Scripts\activate.bat devhyun
9. pycharm 내의 terminal 에서 blog App 생성
python manage.py startapp Blog |
10. DevhyunDjangoBlog의 settings.py 의 INSTALLED_APPS에 9번에서 생성한 Blog 추가하기
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Blog',
]
11. Blog\models.py에 있는 내용 Clear한뒤 Blog의 게시글 Model 만들기!
* Model 객체는 blog/models.py 파일에 선언하여 모델을 만듭니다. 이 파일에 블로그의 게시글 모델도 정의하겠습니다.
* Holy.... 길어져버렸다!
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, 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.title
* 추측 및 구글링
11-1. from django.conf import settings
: django.conf 패키지 (Django의 제공 파일)에서 settings 객체를 참조.
: settings.py 값을 가져오기 위한 선언.
11-2. from django.db import models
: django.db 패키지에서 models 객체를 참조.
: db 사용을 위해 필요한 선언.
11-3. from django.utils import timezone
: django.uttils 패키지에서 timezone 객체 참조.
: 정확한 시간의 사용을 위해 필요한 선언.
11-4. Class Post(models.Model):
: Class 이름은 Post(특수문자와 공백 제외한다면) 다른 이름을 붙일 수도 있습니다. 항상 클래스 이름의 첫 글자는 대문자로 써야 됨.
: Post는 Django의 Model이며 이 코드 때문에 Django는 Post가 데이터베이스에 저장되어야 한다고 알게 됨.
11-5. author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
: Post라는 Class의 속성정의 시작(외래키..인듯?)
: author 는 Post의 ForeignKey이고 settings.py의 AUTH_USER_MEDEL에 CASCADE=종속 됨)
11-6. title = models.CharField(max_length=200)
: title 은 최대 200자까지 입력가능한 문자열 필드(nvarchar 200 인듯?)
11-7. text = models.TextField()
: text 는 글자수 제한 없는 text 필드
11.8 created_date = models.DateTimeField(default = timezone.now)
: created_date 는 DateTime 필드, default는 현재시간
11.9 published_date = models.DateTimeField(blank = true , null = true)
: published_date 는 빈값 입력 가능, null값 입력 가능한 필드
11.10 def publish(self) :
self.published_date = timezone.now()
self.save
: publish = published_date를 현재시간으로 지정하고 save하는 함수로 선언.
11.11 def __str__(self):
return self.title
: __str__ = 호출 시 title을 return해주는 함수로 선언.
12. terminal에서 데이터베이스 모델을 위한 Table 만들기 전 준비
python manage.py makemigrations Blog - enter Migrations for 'Blog': blog/migrations/0001_initial.py: - Create model Post |
13. terminal에서 명령어를 통해 데이터베이스에 모델 추가를 반영!
python manage.py migrate Blog -enter Operations to perform: Apply all migrations: blog Running migrations: Applying blog.0001_initial... OK |
'Web > Django&Python Blog Projecct' 카테고리의 다른 글
[DevHyun's Blog] Pythonanywhere 에서 Git Project Pull 한 후 재배포 하기 (0) | 2020.10.19 |
---|---|
[DevHyun's Blog] Django ORM과 QuerySet 그리고 동적데이터 활용 (0) | 2020.10.19 |
[DevHyun's Blog] Django&Python으로 만든 Blog를 가상환경(pythonanywhere)에서 배포하기! (0) | 2020.10.16 |
[DevHyun's Blog] django 에서 첫 URL 생성 후 view 와 Template만들기! (0) | 2020.10.16 |
[DevHyun's Blog] Django&Python으로 Blog 만들기 - Blog의 관리자 페이지 (0) | 2020.10.16 |