[Django]#2. 장고 앱 작성하기

Jimin_Note·2022년 6월 2일
0

🌱Django

목록 보기
4/13
post-thumbnail

데이터베이스 설치하기

비밀번호오류
MYSQL 설치 후
$cd /usr/local/mysql/bin
$./mysql -p 비밀번호 입력했더니

ERROR 1045 (28000): Access denied for user 'zzz'@'localhost' (using password: YES)

위 에러는
1. 비밀번호 오류
2. 해당 계정에게 권한을 부여하지 않은 경우
이 두가지의 상황에서 발생한다고 한다.

해결방법
root 관리자로 들어가서 내 계정에 권한부여하기
$./mysql -u root -p
비밀번호 입력 후
>CREATE USER '계정명'@'%' IDENTIFIED BY '비밀번호'
>GRANT ALL PRIVILEGES ON *.* TO 'zzz'@'%'
>FLUSH PRICILEGES


기본 어플리케이션들 중 몇몇은 최소한 하나 이상의 데이터베이스 테이블을 사용한다
그러기 위해서는 데이터베이스에서 테이블을 미리 만들기 위해 아래 명령 실행

$ python manage.py migrate

mysite/settings.py 파일의 데이터베이스 설정 및 앱과 함께 제공된 데이터베이스 마이그레이션에 따라 필요한 데이터베이스 테이블을 생성합니다

models.py 👉 데이터 모델 정의

  • Django는 모델(models)이라는 파이썬 객체를 통해 데이터를 관리
  • 필드 타입과 그들의 최대 크기, 기본 값들, 선택 목록 옵션, 문서의 도움말 텍스트, 폼(form)을 위한 label text등을 포함하여 저장된 데이터의 구조를 정의

모델 만들기

<설문조사 어플에서 만들 모델>
1. Question - 질문과 게시 날짜
2. Choice - 선택 텍스트와 투표 집계

  • 각 선택 항목은 질문과 연결된다.
#polls/models.py

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200) #CharField -> 문자필드
    pub_date = models.DateTimeField('date published') # DateTimeField 는 날짜와 시간필드


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

각 필드명(CharField,DateTimeField...)을 Python 코드에서 사용할 수 있으며, 데이터베이스에서는 컬럼명으로 사용할 것임!
위 코드에서 각 모델은 django.db.models 의 하위 클래스로 표현된다.
각 모델에는 여러 개의 클래스 변수가 있으며, 각 클래스 변수는 모델의 데이터베이스 필드를 나타낸다.

📍모델의 활성화

  • 앱을 위한 데이터베이스 스키마 생성(CREATE TABLE 문)
  • Question과 Choice 객체에 접근하기 위한 Python 데이터베이스 접근 API를 생성

먼저, 앱을 현재의 프로젝트에 포함시켜야 한다.
앱의 구성 클래스에 대한 참조를 INSTALLED_APPS 설정에 추가해야하고, PollsConfig 클래스는 polls/apps.py 파일 내에 존재
즉, 경로는polls.apps.PollsConfig
mysite/settings.py 파일을 편집하여 INSTALLED_APPS 설정에 추가하기

INSTALLED_APPS : 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름이 담겨 있음

#`mysite/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', #정적 파일 관리 프레임워크
]

Django에 polls 앱이 포함되었다!

$ python manage.py makemigrations polls

makemigrations : Django가 변경 사항을 모델에 저장하는 방법

profile
Hello. I'm jimin:)

0개의 댓글