Django tutorial.2

가비·2020년 8월 29일
0

Django

목록 보기
2/2

database

  • Django default로 SQLite 사용.
  • 데이터베이스 테이블 생성 : python manage.py migrate
    👉🏻 INSTALLED_APPS 설정을 확인하고 프로젝트명/settings.py 파일의 데이터베이스 설정 및 앱과 함께 제공되는 데이터베이스 마이그레이션에 따라 필요한 데이터베이스 테이블을 생성.
    + 기본으로 제공되는 앱들이 필요 없다면 migrate 실행 전 제거할 앱들을 주석처리 하거나 삭제.

model

  • 데이터의 필수적인 필드들과 동작들을 포함.
polls/models.py

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)

#각 모델은 django.db.models.Model을 하위 클래스로 만드는 클래스로 표현,
#여러 클래스 변수가 있으며 각 변수는 모델의 데이터베이스 필드를 나타냄.

model 활성화

프로젝트명/settings.py
INSTALLED_APPS = [
    'polls.apps.PollsConfig', #앱을 프로젝트에 포함시키기 위해 앱 구성 클래스 경로 추가.
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
  • 모델 변경사항 저장 : python manage.py makemigrations polls
  • 모델 변경사항 데이터베이스 동기화 : python manage.py migrate

API

  • 대화형 python shell : python manage.py shell
polls/models.py

from django.db import models

class Question(models.Model):
    # ...
    def __str__(self):
        return self.question_text

class Choice(models.Model):
    # ...
    def __str__(self):
        return self.choice_text
        
# __str__() 메소드를 추가하는것은 객체의 표현을 대화식 프롬프트에서 편하게 보려는 이유 말고도, Django 가 자동으로 생성하는 관리 사이트 에서도 객체의 표현이 사용되기 때문.
polls/models.py

import datetime #Python의 표준 모듈인 datetime 모듈 참조

from django.db import models
from django.utils import timezone #Django의 시간대 관련 유틸리티인 django.utils.timezone을 참조


class Question(models.Model):
    # ...
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

admin

  • 관리자 생성 : python manage.py createsuperuser
Username: 유저명
Email address: admin@example.com
Password: **********
Password (again): *********

Superuser created successfully.

python manage.py runserver
👉🏻 http://127.0.0.1:8000/admin/ 접속

  • 관리자 페이지에서 앱 변경
polls/admin.py

from django.contrib import admin #관리자 인터페이스가 있음을 알려야 함.

from .models import Question

admin.site.register(Question)

0개의 댓글