본문 바로가기
Django

Django Tutorial 따라하기(1, 2)

by Adam92 2020. 6. 10.

Tutorial 1


 

Step 1 : 프로젝트 만들기

django-admin startproject mysite	# 프로젝트 'mysite'를 생성한다
python manage.py runserver	# Django프로젝트를 자체서버에서 돌리는 명령어 
  • manage.py 는 어플리케이션을 생성하고, 데이터베이스와 작업하고, 그리고 개발 웹 서버를 시작하기 위해 사용됩니다.

 

 

 

Step 2 : App 생성하기

python manage.py startapp polls		# 앱 생성 명령어 ( manage.py 있는 곳에서 실행해야됨)

 

 

Step 3 : 첫 번째 뷰 작성하기

#polls/view.py 

from django.http import HttpResponse

def index(request):
	return HttpResponse("Hello, You're at the polls index.")
  • View는 화면에 클라이언트에게 보여지는 화면입니다.

 

 

Step 4 : 최상위 URLconf에서 polls.urls 모듈을 바라보게 설정 합니다.

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
	path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]
  • include() 함수는 다른 URLconf들을 참조할 수 있도록 도웁니다. 

 

 

Tutorial 2


Step 1 : Model 만들기

모델이란, 부가적인 메타데이터를 가진 데이터베이스의 구조(layout)를 말합니다.

from django.db import models

class Question(models.Model):
	question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
   
class Choice(models.Model):
	question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

 

  • 데이터의 각 필드는 Field 클래스의 인스턴스로서 표현되고, 어떤 자료형을 가질 수 있는지 Django에게 말해줍니다.
  • 몇몇 Field 클래스들은 필수 인수가 필요합니다. (ex. CharField 경우 max_length를 입력해주어야합니다.)
  • Votes같은 경우에는 선택적 인자 defaul 값을 주었습니다.
  • 마지막으로 ForeignKey를 사용한 관계설정에대해 설명하겠습니다. 이 예제에서는 각각의 Choice가 하나의 Question에 관계된다는 것을 Django에게 알려줍니다. 
  • Django는 다-대-일, 다-대-다 , 일-대-일과 같은 모든 일반 데이터베이스의 관계들을 지원합니다. 

 

Data Field (https://tothefullest08.github.io/django/2019/04/27/Django04/)
Field Type Explanation
CharField 제한된 문자열 필드 타입. 최대 길이를 max_length 옵션에 지정해야 한다. 문자열의 특별한 용도에 따라 CharField의 파생클래스로서, 이메일 주소를 체크를 하는 EmailField, IP 주소를 체크를 하는 GenericIPAddressField, 콤마로 정수를 분리한 CommaSeparatedIntegerField, 특정 폴더의 파일 패스를 표현하는 FilePathField, URL을 표현하는 URLField 등이 있다.
TextField 대용량 문자열을 갖는 필드
IntegerField 32 비트 정수형 필드. 정수 사이즈에 따라 BigIntegerField, SmallIntegerField 을 사용할 수도 있다.
BooleanField true/false 필드. Null 을 허용하기 위해서는 NullBooleanField를 사용한다.
DateTimeField 날짜와 시간을 갖는 필드. 날짜만 가질 경우는 DateField, 시간만 가질 경우는 TimeField를 사용한다.
DecimalField 소숫점을 갖는 decimal 필드
FileField 바이너리 데이타를 저장하는 필드
FileField 파일 업로드 필드
ImageField FileField의 파생클래스로서 이미지 파일인지 체크한다.
UUIDField GUID (UUID)를 저장하는 필드

 

 

Step 2 : Activate Model

Django는 Model에 입력한 코드를 가지고 다음과 같은 일을 할 수 있습니다.

  • 이 앱을 위한 데이터베이스 스키마 생성(create table문)
  • Question과 Choice 객체에 접근하기 위한 Python 데이터베이스 접근 API를 생성합니다.
API에 관한 내용
https://medium.com/@dydrlaks/api-%EB%9E%80-c0fd6222d34c

 

첫번째로 해야될 일은 현재 프로젝트에게 polls 앱이 설치되어 있다는것을 알리는 것입니다.

  • 앱을 현재의 프로젝트에 포함시키기 위해서는, 앱의 구성 클래스에 대한 참조를 mysite/settings파일안에 있는 INSTALLED_APPS 설정에 추가합니다.
  • polls/apps.py 파일 내에있는 PollsConfig 클래스를 추가합니다.
#mysite.settings.py

INSTALLED_APPS = [
    'polls.apps.PollsConfig',	# PollsConfig 클래스 추가
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

 

  • 모델을 변경시킨 사실과 이변경사항을 migration으로 저장시키고 싶다는 것을 알리기 위해 Django에게 알리기위해 다음의 명령어를 입력합니다.
python manage.py makemigrations polls

 

 

  • 이제 migrate를 실행시켜 데이터베이스에 모델과 관련된 테이블을 생성합니다.
  • migrate 명령은 아직 적용되지 않은 migration을 모두 수집해 이를 수행하며 이 과정을 통해 모델에서의 변경 사항들과 데이터베이스의 스키마의 동기화가 이루어집니다.
python manage.py migrate

 

 

 

 

 

 

Step 3 : Python 쉘을 통해 DB조작해보기 ( API)

python manage.py shell

 

 

Django에서 Model 클래스를 생성하고 난 후, 해당 모델에 상응하는 테이블을 테이터베이스에서 생성할 수 있음.

Python 모델 클래스를 DB에 적용하는 과정을 Migration 이라고 함

 

 

'Django' 카테고리의 다른 글

Django  (0) 2020.06.09